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 を設定すると、すべてのマーカーに同じ情報が表示されるため、これが必要でした。