我设置了一个标记并将其可拖动状态设置为 true。但是当我调用 marker.getPosition()
时,我总是得到相同的位置,就像标记的位置在拖动结束后没有更新一样。
mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map_place))
.getMap();
LatLng MYLOCATION = new LatLng(Double.valueOf(myLat), Double.valueOf(myLng));
marker = new MarkerOptions()
.position(MYLOCATION)
.title(getString(R.string.map_title_my_location)).draggable(true);
mMap.addMarker(marker).showInfoWindow();
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(MYLOCATION, 18));
close.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
LatLng pos = marker.getPosition();
Toast.makeText(activity, "Lat: " + pos.latitude + "; Long: " + pos.longitude, Toast.LENGTH_LONG).show();
}
});
作为我定义的类变量:
GoogleMap mMap;
MarkerOptions marker;
有什么想法吗?!
最佳答案
这是一个老问题,但由于我自己也遇到了同样的问题,所以解决方案如下:您需要先为 map 实例设置 OnMarkerDragListener
(mMap.setOnMarkerDragListener(... )
) 用于更新标记位置值。您实际上不需要在监听器实现方法中执行任何操作(您可以在任何您喜欢的地方使用 marker.getPosition()
),它们只需要存在即可。
更新
现在这也记录在 https://developers.google.com/maps/documentation/android-api/marker#marker_drag_events 中
You can use an OnMarkerDragListener to listen for drag events on a marker. To set this listener on the map, call GoogleMap.setOnMarkerDragListener. To drag a marker, a user must long press on the marker. When the user takes their finger off the screen, the marker will stay in that position. When a marker is dragged, onMarkerDragStart(Marker) is called initially. While the marker is being dragged, onMarkerDrag(Marker) is called constantly. At the end of the drag onMarkerDragEnd(Marker) is called. You can get the position of the marker at any time by calling Marker.getPosition().
关于android - 谷歌地图错误 : Marker's position is not updated after drag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14829195/