2016-08-24 530 views
0

我在Android应用程序中将大量的GeoJSON数据添加到Mapbox中。这使得在较高的缩放级别上滚动浏览地图非常慢。基于这个原因,我想根据当前缩放级别改变输入数据。我查找了一个像getCurrentZoomlevel()这样的函数,但我所能找到的只是MapView类中的getMaxZoomLevel()函数,这只能给我提供最大可能的缩放级别。是否有我可以调用的功能,它给我当前的缩放级别?Mapbox for Android:根据当前缩放级别更改地图输入

对于此解决方案的工作,我还需要根据缩放级别动态删除和添加某些多边形。是否可以删除多边形而不重新加载整个地图?

+0

@xmojmr你指的是在单张一个解决方案,我要寻找一个Mapbox的Android解决方案。 – DigiDude

+0

我的错,对不起 – xmojmr

回答

3

从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的文件很大,您要绘制多边形/折线你可能想看看风格的API,我们将在4.2.0被引入。它允许您添加几何图层并对它们进行样式设置。如果您有兴趣,我建议您查看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)); 
相关问题