我正在阅读注释插件的文档以及示例,但仍然不太理解如何使用Line。
我想创建一条线路,并需要经常使用附加坐标进行更新。在Google Maps中很容易实现,因为我们声明一个Polyline对象,获取LatLng点并设置新坐标。基本上,我不会使用很多自定义,只需设置线路的宽度和颜色。
那么我们是需要定义层,还是只需为此情况使用选项?
第二个问题:(从文档中,我看到了很多FeatureCollection和GeoJSON的示例)这是更新线路的唯一方法吗?
我正在阅读注释插件的文档以及示例,但仍然不太理解如何使用Line。
我想创建一条线路,并需要经常使用附加坐标进行更新。在Google Maps中很容易实现,因为我们声明一个Polyline对象,获取LatLng点并设置新坐标。基本上,我不会使用很多自定义,只需设置线路的宽度和颜色。
那么我们是需要定义层,还是只需为此情况使用选项?
第二个问题:(从文档中,我看到了很多FeatureCollection和GeoJSON的示例)这是更新线路的唯一方法吗?
LatLng
坐标创建LineString
/Line
。
您可以使用LineLayer
:
- https://docs.mapbox.com/android/maps/examples/draw-a-geojson-line/
- https://docs.mapbox.com/android/maps/examples/create-a-line-layer(在此示例中,
style.addSource(new GeoJsonSource("line-source",
FeatureCollection.fromFeatures(new Feature[] {Feature.fromGeometry(
LineString.fromLngLats(routeCoordinates)
)})));)style.addSource(new GeoJsonSource("line-source", LineString.fromLngLats(routeCoordinates)));
。LineLayer
使用的源的GeoJSON。每次要更新时创建一个新的LineString
:source.setGeoJson()
等):https://docs.mapbox.com/android/java/overview/geojson/#geojson-updates
您可以在注释插件中使用LineManager
:
- https://github.com/mapbox/mapbox-plugins-android/blob/master/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/LineActivity.java#L48
- https://github.com/mapbox/mapbox-plugins-android/blob/master/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/LineActivity.java#L64-L73
通过LineManager
更新线:
Line
。
Line currentLine = new Line()
,但它告诉我Line是私有的(虽然在文档中它被声明为公共的)。所以要么是LineString + GeoJSON
,要么是LineManager + LineOptions
? - H.KaratsanovlineManager.create(lineOptions);
创建了一个Line
。https://github.com/mapbox/mapbox-plugins-android/blob/master/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/LineChangeActivity.java 中有Line
对象的使用。https://github.com/mapbox/mapbox-plugins-android/blob/master/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/LineChangeActivity.java#L108 - langsmithLocationComponent
位于您想要的线条之上。我循环遍历所有地图层,并查找以mapbox-android-line-layer-
开头(不带数字结尾)的层,以便通过.layerAbove()
传递的id是插件添加的最新层。 - langsmithmapFragment.getMapAsync(this)
之前,将LocationComponentOptions
代码和其他内容放在onMapReady()
回调区域内运行。一旦知道地图和样式已经完成设置,请运行与地图相关的内容。请参阅https://docs.mapbox.com/android/maps/examples/support-map-fragment/和https://github.com/mapbox/mapbox-android-demo/blob/master/MapboxAndroidDemo/src/main/java/com/mapbox/mapboxandroiddemo/examples/basics/SupportMapFragmentActivity.java#L55-L71。 - langsmith