OSMdroid在拖动时向上移动标记

时间:2014-11-06 16:12:17

标签: android osmdroid

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

我试图做的事情:

@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();
}

但它不起作用

你能帮我吗?

3 个答案:

答案 0 :(得分:0)

marker.setPosition(new GeoPoint(marker.getPosition().getLatitude()+200,marker.getPosition().getLongitude()));

+200度?这太过分了!

  

它在我的手指下,我看不到它 - 这是一个诀窍,可以确切地看到"峰值"我的标记。

=>我同意。我认为一个好的解决方案是拥有一个合适的标记图标设计(例如高于平常?)。

答案 1 :(得分:0)

您必须将代码放入onMarkerDrag()

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

答案 2 :(得分:0)

您的应用可能已经太晚了,但在遇到同样的问题时,我修改了标记以提供此功能。

请参阅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已被合并......