【问题标题】:Google maps error: Marker's position is not updated after drag谷歌地图错误:拖动后标记的位置未更新
【发布时间】:2013-02-12 09:22:41
【问题描述】:

我设置了一个标记,将它的可拖动状态设置为 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;

有什么想法吗?!

【问题讨论】:

    标签: android google-maps


    【解决方案1】:

    这是一个老问题,但由于我自己也遇到了同样的问题,所以解决方案如下:您需要首先为地图实例设置 OnMarkerDragListener (mMap.setOnMarkerDragListener(...)),以便更新标记位置值。您实际上不需要在侦听器实现方法中做任何事情(您可以在任何您喜欢的地方使用marker.getPosition()),它们只需要存在即可。

    更新

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

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

    【讨论】:

      【解决方案2】:

      您应该在主要活动中实现OnMarkerDragListener()。在 onMarkerDragEnd() 方法中,您可以获得标记的位置(通过使用它的 ID)

      【讨论】:

        猜你喜欢
        • 2012-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-30
        相关资源
        最近更新 更多