Google地图错误:拖动后标记的位置未更新

Iva*_*vic 5 android google-maps

我设置了一个标记,将它的可拖动状态设置为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();
  }
});
Run Code Online (Sandbox Code Playgroud)

作为班级变量我定义:

GoogleMap mMap;
MarkerOptions marker;
Run Code Online (Sandbox Code Playgroud)

任何的想法?!

Ren*_*use 10

这是一个老问题,但由于我自己遇到了同样的问题,这里是解决方案:你需要OnMarkerDragListener为map事件设置第一个(mMap.setOnMarkerDragListener(...)),以便更新标记位置值.你真的不需要在监听器实现方法中做任何事情(你可以marker.getPosition()在任何你喜欢的地方使用),它们只需要存在.

UPDATE

现在,请参阅https://developers.google.com/maps/documentation/android-api/marker#marker_drag_events

您可以使用OnMarkerDragListener监听标记上的拖动事件.要在地图上设置此侦听器,请调用GoogleMap.setOnMarkerDragListener.要拖动标记,用户必须长按标记.当用户将手指从屏幕上移开时,标记将保持在该位置.拖动标记时,最初会调用onMarkerDragStart(Marker).在拖动标记时,会不断调用onMarkerDrag(Marker).在拖动onMarkerDragEnd(Marker)的末尾被调用.您可以通过调用Marker.getPosition()随时获取标记的位置.


小智 6

您应该OnMarkerDragListener()在主要活动中实施.在方法内部,onMarkerDragEnd()您可以获取标记的位置(通过使用其ID)