如何在 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);
      }
    });

这应该会在每次地图旋转时调整标记方向并使其指向同一方向。