onDragStart返回不同的标记

时间:2015-06-30 09:30:17

标签: android google-maps

我正在使用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映射。

我的印象是,当用户选择拖动标记时,系统会删除此标记并返回位置略有不同的新标记。

这似乎不真实......我怎样才能解决这个问题?

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()