[core][android][darwin] Fix GeoJSONOptions handling

- share the `GeoJSONOptions` instances using `Immutable<GeoJSONOptions>` - avoid extra copying
- fix wrapping of the `GeoJSONOptions` instances in supercluster map/reduce lambdas.
  Previously, local variables were wrapped by reference.
This commit is contained in:
Mikhail Pozdnyakov
2019-11-28 18:19:17 +02:00
parent e3d1daaf66
commit cd4136ed4b
12 changed files with 104 additions and 97 deletions

View File

@@ -48,9 +48,9 @@ std::vector<Feature> getTopClusterFeature(QueryTest& test) {
};
LatLng coordinate{0, 0};
GeoJSONOptions options{};
options.cluster = true;
auto source = std::make_unique<GeoJSONSource>("cluster_source"s, options);
Mutable<GeoJSONOptions> options = makeMutable<GeoJSONOptions>();
options->cluster = true;
auto source = std::make_unique<GeoJSONSource>("cluster_source"s, std::move(options));
source->setURL("http://url"s);
source->loadDescription(*test.fileSource);

View File

@@ -852,10 +852,8 @@ TEST(Source, RenderTileSetSourceUpdate) {
TEST(Source, GeoJSONSourceTilesAfterDataReset) {
SourceTest test;
GeoJSONSource source("source");
auto geoJSONData = GeoJSONData::create(
mapbox::geojson::parse(
R"({"geometry": {"type": "Point", "coordinates": [1.1, 1.1]}, "type": "Feature", "properties": {}})"),
{});
auto geoJSONData = GeoJSONData::create(mapbox::geojson::parse(
R"({"geometry": {"type": "Point", "coordinates": [1.1, 1.1]}, "type": "Feature", "properties": {}})"));
source.setGeoJSONData(geoJSONData);
RenderGeoJSONSource renderSource{staticImmutableCast<GeoJSONSource::Impl>(source.baseImpl)};
@@ -879,4 +877,4 @@ TEST(Source, GeoJSONSourceTilesAfterDataReset) {
static_cast<RenderSource&>(renderSource)
.update(source.baseImpl, layers, true, true, test.tileParameters(MapMode::Static));
EXPECT_TRUE(renderSource.isLoaded()); // Tiles are reset in static mode.
}
}