4

Google Maps Android API v2 をアプリに統合すると、GoogleMap のマーカーで奇妙な動作が発生します。OnMarkerClickListener#onMarkerClick(マーカー マーカー) は、InfoWindow の非表示後に呼び出されません。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 の非表示イベントをリッスンする場合は、InfoWindow を非表示にする onMarkerClick メソッドまたはオーバーライドされた onMapClick メソッドのいずれかに独自のロジックを実装する必要があります (マップ上の任意の場所をクリックすると情報が非表示になる可能性があるため)。最後のケースでは、アクティブ化された infoWindow で最後のマーカーの参照を保持し、そのウィンドウの状態をチェックしてロジックを実装する必要があります。

于 2013-05-22T07:59:43.943 に答える