我正在尝试在Google地图上显示两种类型的信息窗口。当我单击一个标记时,会调用自定义信息窗口,但是当我单击Map时,不会显示另一个自定义信息窗口。而且我得到了日志,我发现在setOnMapClickListener中没有调用getInfoContents。但是调用setOnMarkerListener中的getInfoContents。 ......为什么?
mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
@Override
public void onMapClick(LatLng latLng) {
mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
@Override
public View getInfoWindow(Marker marker) {
Log.v("a", "getInfoWindow");
return null;
}
@Override
public View getInfoContents(Marker marker) {
Log.v("a", "getInfoContents");
View view = getActivity().getLayoutInflater().inflate(R.layout.marker_default, null);
TextView title = (TextView) view.findViewById(R.id.default_infowindow);
title.setText(mCompany);
return view;
}
});
}
});
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
@Override
public View getInfoWindow(Marker marker) {
return null;
}
@Override
public View getInfoContents(Marker marker) {
View view = getActivity().getLayoutInflater().inflate(R.layout.marker_window, null);
ImageView badge = (ImageView) view.findViewById(R.id.badge);
badge.setImageResource(R.drawable.ic_launcher);
TextView title = (TextView) view.findViewById(R.id.title);
TextView snippet = (TextView) view.findViewById(R.id.snippet);
title.setText(mCompany);
snippet.setText(mAddress);
return view;
}
});
return false;
}
});
答案 0 :(得分:2)
我有同样的问题,我忘了让活动意识到回调。 尝试添加:
mMap.setInfoWindowAdapter(this);
答案 1 :(得分:1)
根据Google Maps reference,一次只能显示一个信息窗口。此外,在点击标记时会调用getInfoConents()方法。
如果要以编程方式显示信息窗口,则应调用showInfoWindow()方法。