【问题标题】:OSMdroid move up the marker on dragOSMdroid 在拖动时向上移动标记
【发布时间】:2017-03-12 04:05:54
【问题描述】:

当我的标记可拖动时,我想在拖动之前将其向上移动,因为它在我的手指下,我看不到它。 (这是一个技巧,可以准确地查看我的标记的“峰值”在哪里)

我想做什么:

@Override
public void onMarkerDragStart(org.osmdroid.bonuspack.overlays.Marker marker) {
  LogWrapper.debug(MapFragment.class, "onMarkerDragStart()");
  marker.setPosition(new GeoPoint(marker.getPosition().getLatitude()+200,marker.getPosition().getLongitude()));
  poiMarkers.invalidate();
  mapView.invalidate();
}

但它不起作用

你能帮帮我吗?

【问题讨论】:

    标签: android osmdroid


    【解决方案1】:
    marker.setPosition(new GeoPoint(marker.getPosition().getLatitude()+200,marker.getPosition().getLongitude()));
    

    +200 度?这太多了!

    它在我的手指下,我看不到它 - 这是一个技巧,可以准确地看到我的标记的“峰值”在哪里。

    => 我同意。我想一个好的解决方案是有一个适当的标记图标设计(例如比平时更高?)。

    【讨论】:

    • 200 度,可能太多了,但我的观点根本不动......好吧,我没有想到解决方案:我将创建一个带有空白的标记底部。
    • 我对 +200 度的第一个反馈是无关紧要的 - 抱歉 => 实际上,标记拖动机制正在将标记位置强制到事件位置(您手指的位置)。因此,您不能以这种方式移动标记。通常,当拖动 start 时,您通常会看到标记“bumping”,因为它的热点立即移动到手指位置。
    【解决方案2】:

    您必须将代码放入onMarkerDrag()。

    @Override
            public void onMarkerDrag(Marker marker) {
                marker.setPosition(new GeoPoint(marker.getPosition().getLatitude()+0.00015,marker.getPosition().getLongitude()));
                map.invalidate();
            }
    

    【讨论】:

      【解决方案3】:

      对于您的应用来说可能为时已晚,但在遇到同样的问题时,我修改了标记以提供该功能。

      参见this PR on github...修改moveToEventPosition 以包含偏移量:

      public void moveToEventPosition(final MotionEvent event, final MapView mapView){
          float offsetY = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM, mDragOffsetY, mapView.getContext().getResources().getDisplayMetrics());
          final Projection pj = mapView.getProjection();
          mPosition = (GeoPoint) pj.fromPixels((int)event.getX(), (int)(event.getY()-offsetY));
          mapView.invalidate();
      }
      

      编辑:pr 已合并...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-07
        • 2022-10-17
        相关资源
        最近更新 更多