Android GoogleMaps V2厂商对象参考丢失了

时间:2013-08-08 11:46:48

标签: java android google-maps-api-2 marker

我正在开发一款使用Google Maps V2的应用。当加载地图片段并绘制标记时,我在操作栏上有一个按钮,该按钮调用另一个活动来获取将作为地方查找器的结果。

在此活动结果中,我搜索mMarkers这样的HashMap<Long, Marker>

if (mMarkers.containsKey(place.id)) {
    mMarkers.get(place.id).showInfoWindow();
    mMap.animateCamera(CameraUpdateFactory.newCameraPosition(updateCamera(new LatLng(place.lat, place.lng))));
} else {
    Marker marker = mMap.addMarker(
        new MarkerOptions()
        .position(markerPos)
        .title(place.name)
    );
    marker.showInfoWindow();
    mMarkers.put(place.id, marker); // if it´s not on the map I put it
    mMap.animateCamera(CameraUpdateFactory.newCameraPosition(updateCamera(new LatLng(place.lat, place.lng))));
}

我显示标记infoWindow,因为我已经实现了onInfoWindowClick

这是主要问题。这是我的onInfoWindowClick事件:

@Override
public void onInfoWindowClick(Marker marker) {
    Long placeId = null;
    if (mMarkers.containsValue(marker)) {
        Iterator<Entry<Long, Marker>> it = mMarkers.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry<Long, Marker> pairs = (Map.Entry<Long, Marker>)it.next();
            if (pairs.getValue().getId().equals(marker.getId())) {
                placeId = pairs.getKey();
            }
        }
        if (placeId != null) {
            Intent intent = new Intent(mContext, PlaceActivity.class);
            intent.putExtra("placeId", placeId);
            startActivity(intent);
        }
    }
}

当我检查mMarkers.containsValue(marker)时,对标记对象的引用与上面onActivityResult函数中我在同一地图上的引用不同。

我没有创建该标记对象的任何新实例,因此我不太明白为什么它会更改该引用。

---更新---

我试过没有显示infoWindow,它完美无缺。任何想法为什么会发生这种情况或任何解决方法?

非常感谢!!

0 个答案:

没有答案