1 #include <mbgl/annotation/symbol_annotation_impl.hpp>
2 #include <mbgl/annotation/annotation_tile.hpp>
3 #include <mbgl/tile/tile_id.hpp>
4 #include <mbgl/math/clamp.hpp>
5 #include <mbgl/util/tile_coordinate.hpp>
6 
7 namespace mbgl {
8 
SymbolAnnotationImpl(AnnotationID id_,SymbolAnnotation annotation_)9 SymbolAnnotationImpl::SymbolAnnotationImpl(AnnotationID id_, SymbolAnnotation annotation_)
10 : id(id_),
11   annotation(std::move(annotation_)) {
12 }
13 
updateLayer(const CanonicalTileID & tileID,AnnotationTileLayer & layer) const14 void SymbolAnnotationImpl::updateLayer(const CanonicalTileID& tileID, AnnotationTileLayer& layer) const {
15     std::unordered_map<std::string, std::string> featureProperties;
16     featureProperties.emplace("sprite", annotation.icon.empty() ? std::string("default_marker") : annotation.icon);
17 
18     LatLng latLng { annotation.geometry.y, annotation.geometry.x };
19     TileCoordinate coordinate = TileCoordinate::fromLatLng(0, latLng);
20     GeometryCoordinate tilePoint = TileCoordinate::toGeometryCoordinate(UnwrappedTileID(0, tileID), coordinate.p);
21     layer.addFeature(id, FeatureType::Point, GeometryCollection {{ {{ tilePoint }} }}, featureProperties);
22 }
23 
24 } // namespace mbgl
25