Установите маркер на текущее местоположение в Android, используя Mapbox-SDK v8.6.1 - PullRequest
0 голосов
/ 21 января 2020

Я использую обновленный SDK Mapbox . Но я не смог добавить маркер к текущей позиции . Более того, у меня нет широты и долготы текущего местоположения. Я просто использую locationComponent , чтобы показать текущую позицию. Будет очень полезно, если кто-нибудь поднимет ваши руки помощи .. Заранее спасибо .

1 Ответ

0 голосов
/ 06 февраля 2020

https://docs.mapbox.com/help/tutorials/android-location-listening/ показывает, как отслеживать местоположение устройства.

Если это слишком сложно или вам не нужно постоянно отслеживать местоположение, вы можете сделать Location lastKnownLocation = mapboxMap.getLocationComponent().getLastKnownLocation(); один раз * Установлено 1007 * (https://docs.mapbox.com/android/maps/examples/show-a-users-location/).

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

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

Теперь, когда у вас есть координаты, вы можете добавить SymbolLayer или добавить новые координаты к существующему SymbolLayer Geo JSON.

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

Как обновить SymbolLayer Geo JSON, чтобы появился новый маркер:

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);
    }


  }
});
...