当我的标记可拖动时,我想在拖动之前将其移动,因为它在我的手指下,我看不到它。 (这是一个诀窍,可以确切地看到我的标记的“峰值”在哪里)
我试图做的事情:
@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();
}
但它不起作用
你能帮我吗?
答案 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已被合并......