我正在使用google-map的库开发Android应用程序。
主要问题是管理(latutide,经度)坐标和整数之间的映射。
因此,在Activity中,我有一个名为HashMap<LatLng,Integer>
的{{1}}对象可以完成工作。
我向用户提供dict
的内容,将dict
对象放在地图上,当用户选择新标记时,我会在标签中显示相关的整数。
一切正常。
Marker
错误在注释为“NULL”的行上,其中为拖动选择的标记GoogleMap.OnMarkerDragListener onMarkerDragListener = new
GoogleMap.OnMarkerDragListener() {
private int content;
@Override
public void onMarkerDragStart(Marker marker1) {
content = dict.remove(marker1.getPosition()); // NULL
}
...
@Override
public void onMarkerDragEnd(Marker marker2) {
dict.put(marker2.getPosition(), content);
}
};
具有位置(marker1
对象),该位置不是{{1映射。
我的印象是,当用户选择拖动标记时,系统会删除此标记并返回位置略有不同的新标记。
这似乎不真实......我怎样才能解决这个问题?
答案 0 :(得分:0)
问题不在于拖动侦听器返回的标记,而在于您使用LatLng作为dict的键而不是标记本身(或markerID)。 文档不清楚,但我相信getPosition()会给你一个位置的副本,而remove函数使用'=='方法而不是“equals”。 所以我的建议是使用整个标记作为dict键(这会更好,你可以随时检索位置),或者使用markerID作为dict的键(但这可以改变),使用:
myMarker.getId()
https://developers.google.com/android/reference/com/google/android/gms/maps/model/Marker#getId()