Mapbox的MapSnapshotter可以用于生成包含注释的位图吗?

时间:2019-08-21 06:44:11

标签: android mapbox

我正在尝试使用MapSnapshotterMapbox Maps SDK for Android的一部分)来生成Mapbox地图实例的屏幕截图,包括我添加到地图的单行注释。

我似乎能够按预期生成静态地图位图,但是该图像不包含我的线注释。

是否有一种方法可以使线条出现在MapSnapshotter生成的位图中,或者MapSnapshotter仅限于捕获带有注释的地图屏幕快照?

我目前正在使用Mapbox的一个存储库中提供的example code。我所做的唯一更改是在Mapbox地图样式中添加了新图层和源,以使其显示在交互式Mapbox地图上。

2 个答案:

答案 0 :(得分:2)

为了使用MapSnapshotter拍摄的快照上可见的任何符号/几何形状,必须将所需的图层直接添加到样式中。另外,您可以像在this example中一样在图像上绘制,从而在快照中添加标记。

另一种方法是渲染普通的交互式地图并使用MapboxMap#snapshot对其进行拍照。

答案 1 :(得分:0)

请根据以上答案告诉您如何将所需的图层直接添加到样式中? 我在地图框样式中添加了自定义符号层,但快照不会使符号产生位图。

FeatureCollection featureCollection = FeatureCollection.fromJson(geoJson);
Source source = new GeoJsonSource("my.data.source", featureCollection);
mapboxMap.addSource(source);

SymbolLayer myLayer = new SymbolLayer("my.layer.id", "my.source.id");
myLayer.withProperties(PropertyFactory.iconImage("my.image"));
mapboxMap.addLayer(myLayer);

// ...
MapSnapshotter.Options snapShotOptions = new MapSnapshotter.Options(500, 500);

snapShotOptions.withRegion(mapboxMap.getProjection()
.getVisibleRegion().latLngBounds);

snapShotOptions.withStyle(mapboxMap.getStyle().getUrl());

MapSnapshotter mapSnapshotter = new MapSnapshotter(this, snapShotOptions);

谢谢。