谷歌地图API v2:如何使标记不可点击



我的意思是,如果我单击标记OnMarkerClickListener,那么OnMapClickListener不会被调用。即使我设置了mMap.setOnMarkerClickListener(null);标记对象,它仍然会屏蔽底层贴图和对象的所有单击事件。如何将Marker设置为对所有用户交互透明?

这确实是3.1.59版本库中标记的"限制"。

如果你真的需要它们作为标记,请发布一个关于MarkerOptions.clickableMarker.setClickable的gmaps-api问题的功能请求。

如果可以,可以考虑使用其他视觉对象,例如GroundOverlay。唯一的问题是它们都是按地图缩放的,不像标记。最接近的是半径为零、笔划宽度为20-50 dp的Circle,但这只是一个单色点。

根据关于标记的文档,如果您添加自己的Listener,并且onMarkerClick()方法返回false,则将执行默认行为。

因此,在onMarkerClick()中只返回true,不做任何其他操作来完全覆盖默认值。

我为这个问题找到的唯一解决方法是在OnMarkerClickListener中执行与在OnMapClickListener中相同的代码,并返回false:

getMap().setOnMarkerClickListener(new OnMarkerClickListener() {
    public boolean onMarkerClick(Marker marker) {
        onMapClick(marker.getPosition());
        return true;
    }
});

您可以跳过设置Marker.Title,在这种情况下,标记将无法单击。如果您需要将一些数据(如id或名称)与标记关联,而最终用户无法点击并查看,请使用Marker.Tag

让实现Google Maps的类实现OnMarkerClickListener,即:

public class GoogleMapFragment extends Fragment implements MapImplementation, OnMapReadyCallback,
    GoogleMap.OnMapClickListener, GoogleMap.OnMarkerClickListener {

然后在里面实现方法:

    @Override
    public boolean onMarkerClick(@NonNull Marker marker) {
        // Make Marker not clickable in practice
        return true;
    }

相关内容

  • 没有找到相关文章

最新更新