我有一个mapfragment,用户可以将标记拖动到所需的位置。完成后,他们按下" Save"按钮。
由于我对标记位置不感兴趣,直到用户按下Save,我认为不需要听众,所以我将Marker对象放在一边,并在保存时再次阅读。
selectLocationMarker = map.addMarker(new MarkerOptions().position(myLoc).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE)).draggable(true));
...用户做东西并最终按下保存。在我的保存处理程序方法中:
Log.d(TAG, "performsave selectlocation now has lat;" + selectLocationMarker.getPosition().latitude + ";lon;" + selectLocationMarker.getPosition().longitude);
但是,我注意到我的标记对象位置始终具有初始位置,即使它已被拖动!
所以,我在我的地图上添加了一个OnMarkerDragListener,以查看拖动是否有效。它做了,而且更重要的是,我注意到我的标记然后突然变得更新了! 我刚刚添加了一个
map.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() {.....
使用空方法。如果我将其注释掉,拖动时我的标记lat / lon值不会更新。如果我有听众,则更新值。
这对我来说很奇怪。关于Markers的谷歌文档说:
You can get the position of the marker at any time by calling Marker.getPosition()
这似乎是一个奇怪的错误,我错过了什么?