【问题标题】:Markers in Android Google Maps v2Android Google Maps v2 中的标记
【发布时间】:2013-06-14 21:13:23
【问题描述】:

有什么方法可以在 Markers 中创建 OnLongClickListener 而不使它们可拖动? 我正在尝试显示一个长按标记的上下文菜单,因此我实现了 OnMarkerDragListener 接口以使用以下代码处理它们:

@Override
public void onMarkerDragStart(Marker marker) {

    marker.setDraggable(false);

    if (mode == MODE_VIEW) {
        registerForContextMenu(findViewById(R.id.map));
        openContextMenu(findViewById(R.id.map));
        unregisterForContextMenu(findViewById(R.id.map));
    }

    marker.setDraggable(true);
}

但是当我按下标记时,她向上移动了!因为这就是可拖动的工作方式。 我该怎么办?谢谢!

【问题讨论】:

    标签: java android google-maps-markers google-maps-android-api-2


    【解决方案1】:

    目前没有标记的 onLongClickListener

    【讨论】:

      【解决方案2】:

      您可以尝试在您的代码中添加另一个 hack 并强制使用原始位置。

      marker.setDraggable(false);
      LatLng originalPosition = mapWithOriginalPositionsOfAllMarkers.get(marker);
      marker.setPosition(originalPosition);
      

      这种 hack 可能会导致视觉故障,但标记会回到应有的位置。

      此外,您还需要保留对原始位置的引用:

      // Activity field
      private Map<Marker, LatLng> mapWithOriginalPositionsOfAllMarkers = new HashMap<Marker, LatLng>();
      
      // when adding marker:
      LatLng position = ...
      Marker marker = map.addMarker(new MarkerOptions().position(position));
      mapWithOriginalPositionsOfAllMarkers.put(marker, position);
      

      【讨论】:

        猜你喜欢
        • 2013-03-07
        • 1970-01-01
        • 1970-01-01
        • 2014-01-28
        • 2013-03-22
        • 1970-01-01
        • 1970-01-01
        • 2013-04-28
        • 1970-01-01
        相关资源
        最近更新 更多