Android 的 Mapbox:根据当前缩放级别更改地图输入
Mapbox for Android: Change map input based on current zoom level
我正在 Android 应用程序中将大量 GeoJSON 数据添加到 Mapbox 中。这使得在更高的缩放级别上滚动地图非常慢。出于这个原因,我想根据当前的缩放级别更改输入数据。我寻找像 getCurrentZoomlevel() 这样的函数,但我所能找到的只是 MapView class 中的 getMaxZoomLevel() 函数,它只提供了最大可能的缩放级别。有没有我可以调用的函数来提供当前的缩放级别?
要使此解决方案起作用,我还需要根据缩放级别动态删除和添加某些多边形。是否可以在不重新加载整个地图的情况下删除多边形?
从 Mapbox Android SDK 的 4.0.0
开始,使用 MapboxMap 对象而不是 MapView 与地图进行交互。听起来您正在尝试添加一个不存在但 onCameraChangeListener
存在的缩放侦听器,您可以从中检查缩放级别。
mapboxMap.setOnCameraChangeListener(new MapboxMap.OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition position) {
...
if (position.zoom < 12) {
...
}
}
});
如果您的 GeoJSON 文件很大并且您正在尝试绘制 polygons/polylines,您可能想看看我们将在 4.2.0
中介绍的样式 API。它允许您添加 geojson 图层并设置它们的样式。如果您有兴趣,我建议您查看 Mapbox Android Demo App. This Github issue 中的示例,展示了我添加的大量示例。
编辑: 忘记提及从地图中删除多边形或多段线,您有几个选择。例如,使用 mapboxMap.removeAnnotations();
从地图中删除所有注释或使用 mapboxMap.removePolygon();
删除多边形。 removePolygon
接受一个 Polygon
对象,在将多边形添加到地图时需要分配该对象:
Polygon polygon = map.addPolygon(new PolygonOptions()
.addAll(<List of points making up polygon>)
.setFillColor(color));
我正在 Android 应用程序中将大量 GeoJSON 数据添加到 Mapbox 中。这使得在更高的缩放级别上滚动地图非常慢。出于这个原因,我想根据当前的缩放级别更改输入数据。我寻找像 getCurrentZoomlevel() 这样的函数,但我所能找到的只是 MapView class 中的 getMaxZoomLevel() 函数,它只提供了最大可能的缩放级别。有没有我可以调用的函数来提供当前的缩放级别?
要使此解决方案起作用,我还需要根据缩放级别动态删除和添加某些多边形。是否可以在不重新加载整个地图的情况下删除多边形?
从 Mapbox Android SDK 的 4.0.0
开始,使用 MapboxMap 对象而不是 MapView 与地图进行交互。听起来您正在尝试添加一个不存在但 onCameraChangeListener
存在的缩放侦听器,您可以从中检查缩放级别。
mapboxMap.setOnCameraChangeListener(new MapboxMap.OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition position) {
...
if (position.zoom < 12) {
...
}
}
});
如果您的 GeoJSON 文件很大并且您正在尝试绘制 polygons/polylines,您可能想看看我们将在 4.2.0
中介绍的样式 API。它允许您添加 geojson 图层并设置它们的样式。如果您有兴趣,我建议您查看 Mapbox Android Demo App. This Github issue 中的示例,展示了我添加的大量示例。
编辑: 忘记提及从地图中删除多边形或多段线,您有几个选择。例如,使用 mapboxMap.removeAnnotations();
从地图中删除所有注释或使用 mapboxMap.removePolygon();
删除多边形。 removePolygon
接受一个 Polygon
对象,在将多边形添加到地图时需要分配该对象:
Polygon polygon = map.addPolygon(new PolygonOptions()
.addAll(<List of points making up polygon>)
.setFillColor(color));