0

我正在开发一个使用 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 并且效果很好。任何想法为什么会发生这种情况或任何解决方法?

非常感谢!

4

0 回答 0