diff options
author | Nadia Barbosa <nadiabarbosa@me.com> | 2018-08-13 17:24:56 -0700 |
---|---|---|
committer | Nadia Barbosa <captainbarbosa@users.noreply.github.com> | 2018-08-20 15:45:03 -0700 |
commit | 50059659d100759978c8bebb04ac7beb9e6d618f (patch) | |
tree | 67aa9811c9357b128738a38da02b6a9ca327ff7f /platform | |
parent | fcb68041d51990a4cf67d88fa1eeb0f5d882305c (diff) | |
download | qtlocation-mapboxgl-50059659d100759978c8bebb04ac7beb9e6d618f.tar.gz |
Warn if MGLShapeSource is initialized with MGLShapeCollection
Move warning from ShapeCollection to ShapeSource
Try checking MGLComputedShapeSources
Include MGLShapeCollection header
Add changelog entry
Diffstat (limited to 'platform')
-rw-r--r-- | platform/darwin/src/MGLComputedShapeSource.mm | 17 | ||||
-rw-r--r-- | platform/darwin/src/MGLShapeCollection.mm | 1 | ||||
-rw-r--r-- | platform/darwin/src/MGLShapeSource.mm | 8 | ||||
-rw-r--r-- | platform/ios/CHANGELOG.md | 1 |
4 files changed, 27 insertions, 0 deletions
diff --git a/platform/darwin/src/MGLComputedShapeSource.mm b/platform/darwin/src/MGLComputedShapeSource.mm index 609db7f399..0493131922 100644 --- a/platform/darwin/src/MGLComputedShapeSource.mm +++ b/platform/darwin/src/MGLComputedShapeSource.mm @@ -4,6 +4,7 @@ #import "MGLSource_Private.h" #import "MGLShape_Private.h" #import "MGLGeometry_Private.h" +#import "MGLShapeCollection.h" #include <mbgl/map/map.hpp> #include <mbgl/style/sources/custom_geometry_source.hpp> @@ -131,6 +132,14 @@ mbgl::style::CustomGeometrySource::Options MBGLCustomGeometrySourceOptionsFromDi mbgl::FeatureCollection featureCollection; featureCollection.reserve(data.count); for (MGLShape <MGLFeature> * feature in data) { + if ([feature isMemberOfClass:[MGLShapeCollection class]]) { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + NSLog(@"MGLShapeCollection initialized with MGLFeatures will not retain attributes." + @"Use MGLShapeCollectionFeature to retain attributes instead." + @"This will be logged only once."); + }); + } mbgl::Feature geoJsonObject = [feature geoJSONObject].get<mbgl::Feature>(); featureCollection.push_back(geoJsonObject); } @@ -196,6 +205,14 @@ mbgl::style::CustomGeometrySource::Options MBGLCustomGeometrySourceOptionsFromDi for (MGLShape <MGLFeature> * feature in features) { mbgl::Feature geoJsonObject = [feature geoJSONObject].get<mbgl::Feature>(); featureCollection.push_back(geoJsonObject); + if ([feature isMemberOfClass:[MGLShapeCollection class]]) { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + NSLog(@"MGLShapeCollection initialized with MGLFeatures will not retain attributes." + @"Use MGLShapeCollectionFeature to retain attributes instead." + @"This will be logged only once."); + }); + } } const auto geojson = mbgl::GeoJSON{featureCollection}; static_cast<mbgl::style::CustomGeometrySource *>(self.rawSource)->setTileData(tileID, geojson); diff --git a/platform/darwin/src/MGLShapeCollection.mm b/platform/darwin/src/MGLShapeCollection.mm index 74e78a764a..5db1ee335c 100644 --- a/platform/darwin/src/MGLShapeCollection.mm +++ b/platform/darwin/src/MGLShapeCollection.mm @@ -1,6 +1,7 @@ #import "MGLShapeCollection.h" #import "MGLShape_Private.h" +#import "MGLFeature.h" #import <mbgl/style/conversion/geojson.hpp> diff --git a/platform/darwin/src/MGLShapeSource.mm b/platform/darwin/src/MGLShapeSource.mm index 1425269012..9457d2569a 100644 --- a/platform/darwin/src/MGLShapeSource.mm +++ b/platform/darwin/src/MGLShapeSource.mm @@ -105,6 +105,14 @@ mbgl::style::GeoJSONOptions MGLGeoJSONOptionsFromDictionary(NSDictionary<MGLShap auto geoJSONOptions = MGLGeoJSONOptionsFromDictionary(options); auto source = std::make_unique<mbgl::style::GeoJSONSource>(identifier.UTF8String, geoJSONOptions); if (self = [super initWithPendingSource:std::move(source)]) { + if ([shape isMemberOfClass:[MGLShapeCollection class]]) { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + NSLog(@"MGLShapeCollection initialized with MGLFeatures will not retain attributes." + @"Use MGLShapeCollectionFeature to retain attributes instead." + @"This will be logged only once."); + }); + } self.shape = shape; } return self; diff --git a/platform/ios/CHANGELOG.md b/platform/ios/CHANGELOG.md index edebf57dc6..d4254554d1 100644 --- a/platform/ios/CHANGELOG.md +++ b/platform/ios/CHANGELOG.md @@ -9,6 +9,7 @@ Mapbox welcomes participation and contributions from everyone. Please read [CONT * The `-[MGLMapView visibleFeaturesAtPoint:]` method can now return features near tile boundaries at high zoom levels. ([#12570](https://github.com/mapbox/mapbox-gl-native/pull/12570)) * Fixed inconsistencies in exception naming. ([#12583](https://github.com/mapbox/mapbox-gl-native/issues/12583)) * Added `MGLShapeOfflineRegion` for defining arbitrarily shaped offline regions [#11447](https://github.com/mapbox/mapbox-gl-native/pull/11447) +* Added a one-time warning about possible attribute loss when initializing an `MGLShapeSource` with an `MGLShapeCollection` [#12625](https://github.com/mapbox/mapbox-gl-native/pull/12625) ## 4.3.0 - August 15, 2018 |