4

我将 Google Maps Android API v2 集成到我的应用程序中,并且在 GoogleMap 中的标记有奇怪的行为。在 InfoWindow 隐藏后不会调用 OnMarkerClickListener#onMarkerClick(Marker marker)。它不取决于我如何显示 InfoWindow (既不是marker.showInfoWindow()也不是

@Override
public boolean onMarkerClick(final Marker marker) {
.....
return true;} 

不起作用。在我通过触摸或更改缩放来更改相机位置后,它会工作一次。我在 GoogleMapDemo 中看到的相同行为。

这是我的代码

    private GoogleMap mMap;

@Override
protected void onCreate(Bundle icicle) {
    super.onCreate(icicle);

    setContentView(R.layout.map_address_activity);
    setUpMapIfNeeded(); // from oficial sample

    mMap.setOnMapClickListener(new OnMapClickListener() {

        @Override
        public void onMapClick(LatLng point) {
            mMap.clear();
            mMap.addMarker(new MarkerOptions().position(point).title("Marker"));
            final CameraPosition cameraPosition = new CameraPosition.Builder().target(point).zoom(mMap.getCameraPosition().zoom).build();

            mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
        });
    mMap.setOnMarkerClickListener(new OnMarkerClickListener() {

        @Override
        public boolean onMarkerClick(final Marker marker) {
        Log.e("TESTING", "on Marker click: " + marker.getTitle());
            if (!marker.isInfoWindowShown())
                marker.showInfoWindow();
            else 
                marker.hideInfoWindow();

            return true;
        }
    });
}

隐藏 InfoWindow 后,您能帮我处理标记上的点击事件吗?

4

1 回答 1

2

这就是应该发生的事情!onMarkerClick 只会在单击标记时调用,而不是在 infoWindow 隐藏时调用。

如果您想监听 InfoWindows 隐藏事件,您必须在您 hideInfoWindow 的 onMarkerClick 方法或覆盖的 onMapClick 方法中实现您自己的逻辑(因为单击地图上的任何位置可以隐藏信息)。在最后一种情况下,您必须使用激活的 infoWindow 保持对最后一个标记的引用并检查该窗口状态以实现您的逻辑。

于 2013-05-22T07:59:43.943 回答