我目前正在显示一个标记。当触摸时,信息窗口不会显示。我已确认标题实际上已在标记中设置。
但是,如果我触摸标记上方的区域,即信息窗口所在的区域,我会收到OnInfoWindowClickListener事件。当这种情况发生时,我打开另一个活动,并且当我从该活动返回时,信息窗口将显示(实际上,在活动开始之前,我可以看到它被显示了一瞬间)。
有什么提示可以让我在触摸标记时显示信息窗口吗?
这是我的相关代码:
如果我在循环内部添加
为了调试,我添加了以下代码,并在日志中看到消息和正确的标题,但未能获得信息窗口。
但是,如果我触摸标记上方的区域,即信息窗口所在的区域,我会收到OnInfoWindowClickListener事件。当这种情况发生时,我打开另一个活动,并且当我从该活动返回时,信息窗口将显示(实际上,在活动开始之前,我可以看到它被显示了一瞬间)。
有什么提示可以让我在触摸标记时显示信息窗口吗?
这是我的相关代码:
// .... more code up here
final GoogleMap map = mMapFragment.getMap();
if (map == null) {
mReloadWhenReady = true;
return;
}
map.clear();
final TileProviderMapsV2 prov = new TileProviderMapsV2(mMapFragment.getActivity());
map.addTileOverlay(new TileOverlayOptions().tileProvider(prov));
final LatLngBounds.Builder bounds = new LatLngBounds.Builder();
final Map<Marker, MyNode> markerMap = J.newHashMap();
mNodes.clear();
mNodes.addAll(nodes);
L.p("Maps v2 nodes: %d. ", mNodes.size());
for (MyNode node : mNodes) {
final LatLng latlng = new LatLng(node.getLat(), node.getLon());
final MarkerOptions opts = new MarkerOptions()
.position(latlng)
.title("Title is " + node.getName())
.icon(BitmapDescriptorFactory
.fromResource(com.mydomain.droid.R.drawable.pin_blue));
final Marker m = map.addMarker(opts);
markerMap.put(m, node);
bounds.include(latlng);
}
map.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
final MyNode node = markerMap.get(marker);
L.p("Maps v2 Clicked Node: %s/%d. ", node.getName(),node.getId());
ViewNode.Launchr.setNodeId(node.getId()).launch(mMapFragment.getActivity());
}
});
如果我在循环内部添加
m.showInfoWindow();
,标记将显示信息窗口;但未来会有更多的标记,因此要求仅在触摸标记时显示信息窗口。为了调试,我添加了以下代码,并在日志中看到消息和正确的标题,但未能获得信息窗口。
map.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
L.p("marker clicked " + marker.getTitle());
marker.showInfoWindow();
return false;
}
});
谢谢!
OnCameraChangeListener
吗?如果是这样,你能发布你的onCameraChange
代码吗? - antonio