当用户点击制造商时,我设置CustomInfoWindow
来调用。创建Map
时我不会调用它,但只有在用户点击Marker
时才会调用。
我有不同的叠加层,它们具有不同的infoWindows实现
Overlay类构建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;
}
});
}
下面是我的活动类,它选择用户点击并找到哪个标记。根据标记我称之为相关的覆盖类。该覆盖类具有在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时,所有标记都显示相同的信息。
答案 0 :(得分:0)
我得到了修复。现在,当我点击每个标记时,我会看到不同的信息。
我在overlay.onTap(overlayItem)
onMarkerClick(final Marker marker)
之后添加了以下代码
if (!marker.isInfoWindowShown())
marker.showInfoWindow();