@@ -19,20 +19,22 @@ using namespace mbgl::style;
|
||||
TEST(CustomGeometrySource, Grid) {
|
||||
util::RunLoop loop;
|
||||
|
||||
HeadlessFrontend frontend { 1 };
|
||||
Map map(frontend, MapObserver::nullObserver(),
|
||||
HeadlessFrontend frontend{1};
|
||||
Map map(frontend,
|
||||
MapObserver::nullObserver(),
|
||||
MapOptions().withMapMode(MapMode::Static).withSize(frontend.getSize()),
|
||||
ResourceOptions().withCachePath(":memory:").withAssetPath("test/fixtures/api/assets"));
|
||||
map.getStyle().loadJSON(util::read_file("test/fixtures/api/water.json"));
|
||||
map.jumpTo(CameraOptions().withCenter(LatLng { 37.8, -122.5 }).withZoom(10.0));
|
||||
map.jumpTo(CameraOptions().withCenter(LatLng{37.8, -122.5}).withZoom(10.0));
|
||||
|
||||
CustomGeometrySource::Options options;
|
||||
options.fetchTileFunction = [&map](const mbgl::CanonicalTileID& tileID) {
|
||||
double gridSpacing = 0.1;
|
||||
FeatureCollection features;
|
||||
const LatLngBounds bounds(tileID);
|
||||
for (double y = ceil(bounds.north() / gridSpacing) * gridSpacing; y >= floor(bounds.south() / gridSpacing) * gridSpacing; y -= gridSpacing) {
|
||||
|
||||
for (double y = ceil(bounds.north() / gridSpacing) * gridSpacing;
|
||||
y >= floor(bounds.south() / gridSpacing) * gridSpacing;
|
||||
y -= gridSpacing) {
|
||||
mapbox::geojson::line_string gridLine;
|
||||
gridLine.emplace_back(bounds.west(), y);
|
||||
gridLine.emplace_back(bounds.east(), y);
|
||||
@@ -40,14 +42,16 @@ TEST(CustomGeometrySource, Grid) {
|
||||
features.emplace_back(gridLine);
|
||||
}
|
||||
|
||||
for (double x = floor(bounds.west() / gridSpacing) * gridSpacing; x <= ceil(bounds.east() / gridSpacing) * gridSpacing; x += gridSpacing) {
|
||||
for (double x = floor(bounds.west() / gridSpacing) * gridSpacing;
|
||||
x <= ceil(bounds.east() / gridSpacing) * gridSpacing;
|
||||
x += gridSpacing) {
|
||||
mapbox::geojson::line_string gridLine;
|
||||
gridLine.emplace_back(x, bounds.south());
|
||||
gridLine.emplace_back(x, bounds.north());
|
||||
|
||||
|
||||
features.emplace_back(gridLine);
|
||||
}
|
||||
auto source = static_cast<CustomGeometrySource *>(map.getStyle().getSource("custom"));
|
||||
auto source = static_cast<CustomGeometrySource*>(map.getStyle().getSource("custom"));
|
||||
if (source) {
|
||||
source->setTileData(tileID, features);
|
||||
}
|
||||
@@ -57,11 +61,11 @@ TEST(CustomGeometrySource, Grid) {
|
||||
|
||||
auto fillLayer = std::make_unique<FillLayer>("landcover", "mapbox");
|
||||
fillLayer->setSourceLayer("landcover");
|
||||
fillLayer->setFillColor(Color{ 1.0, 1.0, 0.0, 1.0 });
|
||||
fillLayer->setFillColor(Color{1.0, 1.0, 0.0, 1.0});
|
||||
map.getStyle().addLayer(std::move(fillLayer));
|
||||
|
||||
auto layer = std::make_unique<LineLayer>("grid", "custom");
|
||||
layer->setLineColor(Color{ 1.0, 1.0, 1.0, 1.0 });
|
||||
layer->setLineColor(Color{1.0, 1.0, 1.0, 1.0});
|
||||
map.getStyle().addLayer(std::move(layer));
|
||||
|
||||
test::checkImage("test/fixtures/custom_geometry_source/grid", frontend.render(map).image, 0.0006, 0.1);
|
||||
|
||||
Reference in New Issue
Block a user