使用 Mapbox-sdk v8.6.1 将标记设置为 Android 中的当前位置
Set Marker to Current Location in Android using Mapbox-sdk v8.6.1
我正在使用 Mapbox 的更新版 sdk。但是我无法将 marker 添加到 current position。此外,我没有当前位置的 latitude 和 longitude 。我只是使用 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);
}
}
});
我正在使用 Mapbox 的更新版 sdk。但是我无法将 marker 添加到 current position。此外,我没有当前位置的 latitude 和 longitude 。我只是使用 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);
}
}
});