我设置了一个标记,并将其可拖动状态设置为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();
  }
});

作为我定义的类var:
GoogleMap mMap;
MarkerOptions marker;

任何的想法?!

最佳答案

这是一个古老的问题,但是由于我自己也遇到了相同的问题,因此可以采用以下解决方案:您需要先设置 map 实例的OnMarkerDragListener(mMap.setOnMarkerDragListener(...)),以更新标记位置值。您实际上不需要在监听器实现方法内做任何事情(您可以在任何喜欢的地方使用marker.getPosition()),它们必须存在。

更新

现在也记录在https://developers.google.com/maps/documentation/android-api/marker#marker_drag_events

10-07 20:02