触摸标记时,地图v2信息窗口不会显示,但触摸不可见的信息窗口后会显示

zun*_*ndi 6 android google-maps google-maps-markers google-maps-android-api-2

我目前正在显示一个标记.触摸时,不显示信息窗口.我已经确认标题实际上是在标记中设置的.

但是,如果我触摸信息窗口所在标记上方的区域,我会收到该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());
    }
});
Run Code Online (Sandbox Code Playgroud)

如果我m.showInfoWindow();在for循环中添加标记显示信息窗口,但是将来会有更多标记,因此要求仅在触摸标记时显示信息窗口.

出于调试目的,我添加了以下代码,我在日志中看到了消息以及正确的标题,但我没有收到信息窗口:

map.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {

    @Override
    public boolean onMarkerClick(Marker marker) {
        L.p("marker clicked " + marker.getTitle());
        marker.showInfoWindow();
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

谢谢!

小智 0

尝试这样做:

map.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {

    @Override
    public boolean onMarkerClick(Marker marker) {
        marker = m;
        L.p("marker clicked " + marker.getTitle());
        marker.showInfoWindow();
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)