[core, android, ios, macos] Replaced getPointAnnotationsInBounds() w/ queryPointAnnotations() (#5165)
queryPointAnnotations() accepts a screen rectangle instead of a geographic bounding box, so marker hit testing works at the edges of a rotated, tilted map view. Fixes #5151.
This commit is contained in:
committed by
Jesse Bounds
parent
272ec0c30b
commit
e147887e35
@@ -703,10 +703,6 @@ void Map::removeAnnotation(AnnotationID annotation) {
|
||||
update(Update::AnnotationStyle | Update::AnnotationData);
|
||||
}
|
||||
|
||||
AnnotationIDs Map::getPointAnnotationsInBounds(const LatLngBounds& bounds) {
|
||||
return impl->annotationManager->getPointAnnotationsInBounds(bounds);
|
||||
}
|
||||
|
||||
#pragma mark - Feature query api
|
||||
|
||||
std::vector<Feature> Map::queryRenderedFeatures(const ScreenCoordinate& point, const optional<std::vector<std::string>>& layerIDs) {
|
||||
@@ -735,6 +731,18 @@ std::vector<Feature> Map::queryRenderedFeatures(const ScreenBox& box, const opti
|
||||
});
|
||||
}
|
||||
|
||||
AnnotationIDs Map::queryPointAnnotations(const ScreenBox& box) {
|
||||
auto features = queryRenderedFeatures(box, {{ AnnotationManager::PointLayerID }});
|
||||
AnnotationIDs ids;
|
||||
ids.reserve(features.size());
|
||||
for (auto &feature : features) {
|
||||
assert(feature.id);
|
||||
assert(*feature.id <= std::numeric_limits<AnnotationID>::max());
|
||||
ids.push_back(static_cast<AnnotationID>(feature.id->get<uint64_t>()));
|
||||
}
|
||||
return ids;
|
||||
}
|
||||
|
||||
#pragma mark - Style API
|
||||
|
||||
style::Source* Map::getSource(const std::string& sourceID) {
|
||||
|
||||
Reference in New Issue
Block a user