使用 Mapbox-sdk v8.6.1 将标记设置为 Android 中的当前位置

Set Marker to Current Location in Android using Mapbox-sdk v8.6.1

我正在使用 Mapbox 的更新版 sdk。但是我无法将 marker 添加到 current position。此外,我没有当前位置的 latitudelongitude 。我只是使用 locationComponent 来显示当前位置。 如果有人伸出援助之手,那将非常有帮助。.在此先感谢

https://docs.mapbox.com/help/tutorials/android-location-listening/ 显示如何跟踪设备位置。

如果这太复杂或者您不需要持续跟踪位置,您可以在设置 LocationComponent 后执行 Location lastKnownLocation = mapboxMap.getLocationComponent().getLastKnownLocation(); (https://docs.mapbox.com/android/maps/examples/show-a-users-location/)。

Location lastKnownLocation = mapboxMap.getLocationComponent().getLastKnownLocation();

lastKnownLocation.getLatitude();
lastKnownLocation.getLongitude();

现在您有了坐标,可以添加 SymbolLayer 或将新坐标添加到现有 SymbolLayer 的 GeoJSON。

https://docs.mapbox.com/android/maps/examples/marker-symbol-layer/

如何更新 SymbolLayer GeoJSON 以便出现新标记:

map.getStyle(new Style.OnStyleLoaded() {
  @Override
  public void onStyleLoaded(@NonNull Style style) {

    featureList.add(Feature.fromGeometry(Point.fromLngLat(lastKnownLocation.getLongitude(), lastKnownLocation.getLatitude())));

    FeatureCollection newFeatureCollection = FeatureCollection.fromFeatures(featureList);

    GeoJsonSource source = style.getSourceAs("symbol-layer-source-id");
    if (source != null) {
      source.setGeoJson(newFeatureCollection);
    }


  }
});