如何在 Mapbox Android SDK 中让标记贴在地面上?
How to make marker be attached to the ground in Mapbox Android SDK?
我正在使用最新的 Mapbox Android SDK 并尝试在地图上显示交通标记。有一个标志 isFlat
表示标记应与地面平行。但是,当我旋转地图时,标记不会与地面一起旋转,例如如果我将旋转角度设置为使标记面向北方,则在用户旋转地图后,标记将不会旋转,并且不再指向北方。此行为与我之前使用的 Google Maps SDK 不同。
我必须在每个相机更新事件(当相机旋转发生变化时)上手动重新调整标记的旋转。问题是如何固定标记的位置,使其贴在地面上并随之旋转?
虽然我们还没有实施任何类型的锚定来使标记指向特定的地图方向,但目前最好的解决方案是向地图添加 onCameraChangeListener
并在地图已旋转:
marker = mapboxMap.addMarker(new MarkerViewOptions()
.position(new LatLng(40.73581, -73.99155))
.flat(true));
mapboxMap.setOnCameraChangeListener(new MapboxMap.OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition position) {
marker.setRotation((float) -position.bearing);
}
});
这应该会在每次地图旋转时调整标记方向并使其指向同一方向。
我正在使用最新的 Mapbox Android SDK 并尝试在地图上显示交通标记。有一个标志 isFlat
表示标记应与地面平行。但是,当我旋转地图时,标记不会与地面一起旋转,例如如果我将旋转角度设置为使标记面向北方,则在用户旋转地图后,标记将不会旋转,并且不再指向北方。此行为与我之前使用的 Google Maps SDK 不同。
我必须在每个相机更新事件(当相机旋转发生变化时)上手动重新调整标记的旋转。问题是如何固定标记的位置,使其贴在地面上并随之旋转?
虽然我们还没有实施任何类型的锚定来使标记指向特定的地图方向,但目前最好的解决方案是向地图添加 onCameraChangeListener
并在地图已旋转:
marker = mapboxMap.addMarker(new MarkerViewOptions()
.position(new LatLng(40.73581, -73.99155))
.flat(true));
mapboxMap.setOnCameraChangeListener(new MapboxMap.OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition position) {
marker.setRotation((float) -position.bearing);
}
});
这应该会在每次地图旋转时调整标记方向并使其指向同一方向。