0

CustomInfoWindowユーザーがメーカーをクリックしたときに呼び出すように設定しました。作成時には呼び出しませんMapが、ユーザーが をクリックしたときにのみ呼び出しますMarker

私はさまざまなオーバーレイを持っており、それらにはさまざまな infoWindows 実装オーバーレイ クラスinfoWindowが以下のように構築されています。

public  void onTap(AndroidMapOverlayItem item) {

  String overlayType = "";

  googleMap.setInfoWindowAdapter(new InfoWindowAdapter() {

 /*
  * some code to find overlayType
  */

        @Override
        public View getInfoWindow(Marker marker) {

            return null;
        }

        @Override
        public View getInfoContents(Marker marker) {

            if ("mylocation".equalsIgnoreCase(overlayType)) {


                // set title
                ((TextView)infoWindow.findViewById(R.id.title)).setText("Title");

                // set distance
                ((TextView)infoWindow.findViewById(R.id.text)).setText(display);

            }
            return infoWindow;

        }
    });
 }

以下は、ユーザーのクリックを選択し、どのマーカーを見つける私のアクティビティ クラスです。マーカーに基づいて、関連するオーバーレイ クラスを呼び出します。そのオーバーレイ クラスには、情報ウィンドウに表示する情報があります。アクティビティクラス。

googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
googleMap.setOnMarkerClickListener(this);        

@Override
public boolean onMarkerClick(final Marker marker) {
    Log.d(TAG,"Inside onMakerClick "+marker);


    /*
             * find the relevant overlay class and try to fire it's onTap event.
             * onTap event has what needs to be done with specific marker.
             * Different marker has different information to show.
             *
             */
    overlay.onTap(overlayItem);


    return true;

}

最初のインスタンスで CustomInfowindow を設定すると、すべてのマーカーに同じ情報が表示されるため、これが必要でした。

4

1 に答える 1