The current implementation of view backed annotations mostly relies
on the existing annotation model manager and the associated underlying
boost query implementations for annotation management. However, since
the representation of the model is a view, an image was not installed
for view backed annotations. Because the underlying annotation
management implementation is not entire comfortable working without
an image, it would report
`[INFO] {Worker}[Sprite]: Can't find sprite named 'default_marker'`
when annotation models without an image were encountered.
This updates the annotation adding logic in to create (or reuse) and
install a small, invisible image for each view backed annotation.
* Layer source ID is immutable; must be provided to the constructor
* Layer source layer is mutable
* Layers with GeoJSON sources do not have a source layer
While here, make Layer::copy impl-private.
This changes the way the the calculation for the largest visual
annotation representation (stored in
_unionedAnnotationRepresentationSize) is done so that it includes both
images and views. The `annotationTagAtPoint` method is then able to
find annotation objects that are in a query rect formed from the
sizes of all manner of point annotation visual representations.
The `annotationTagAtPoint` method also gains new logic in a conditional
to handle annotations backed by MGLAnnotationViews. Similarly to
the image case, it filters out disabled annotations and calculates
a centered rect for the view. The hit test logic remains the same but
now works correctly for both the centered rects of both images and views.
This also fixes a bug where the `largestAnnotationViewSize` was always
holding the last annotation view size and not necessarily the largest.
This would affect when annotation views are put into a reuse queue since
the size is used to help determine when an annotation view has gone
offscreen.
A verb doesn’t make sense in this enum value. Instead, use a descriptive word for this effect and describe it in detail in the documentation comment.
Cherry-picked from 415c182946.
This adds a guard so that when a shove gesture is occurring, no other
gestures take place. This helps avoid the disorienting feeling of
having the map move left and right and rotate while trying to tilt it
and looks more like Google maps.
Qt4 will run tests with libjemalloc.so. The Memory.Footprint and
the Memory.Fragmentation will only run with libjemalloc.so because
we have then a better control over the results.
Simple tests that will render a raster and a vector map and
hopefully the valgrind bot will detect something wrong if any.
The other test will look for application lifetime leaks that cannot
be detected with valgrind. It can also detect GL leaks if they are
very expressive. A threshold is needed because of memory will grow
anyway due to fragmentation.
The StupFileSource of the memory test will do the rendering
completely offline with a vector tile that is densly populated
with features and a raster tile of the same region.
The styles are streets and satellite respectivelly.