我正在开发一款使用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,它完美无缺。任何想法为什么会发生这种情况或任何解决方法?
非常感谢!!