gpt4 book ai didi

android - 如何在 mapview 中实现我自己的双击?

转载 作者:行者123 更新时间:2023-11-29 16:16:50 24 4
gpt4 key购买 nike

我一直在使用 OSMdroid 制作离线 map

我有两个缩放级别的 map 图 block ,即 12 和 15

现在通常的双击会将 map View 缩放 1 级

我想做的是在用户双击 map 后将 setZoomLevel() 设置为 15,

这可能吗?

我尝试使用 onGestureListener ,但不知何故它不起作用

该方向的任何提示或线索或示例代码都会有很大帮助,谢谢

最佳答案

我对 Osmdroid MapView 有类似的要求,因为我不希望它执行“在双击位置居中并放大”的默认功能。我想让它弹出一个 toast 。在我的例子中,我在 MapView 之上有一个叠加层,所以我只是让叠加层在其 onDoubleTap 方法中使用双击。出于您的目的,您可以只添加一个叠加层,它不绘制任何内容,但具有自己的双击功能。

因此,在 onCreate 结束时,您可以添加叠加层。这个小应用程序似乎展示了您想要的 - (您需要添加条件代码来检查缩放级别和其他修补):

public class OsmdroidDemoMap extends Activity {

private MapView mMapView;
private MapController mMapController;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.osm_main);
mMapView = (MapView) findViewById(R.id.mapview);
mMapView.setTileSource(TileSourceFactory.MAPNIK);
mMapView.setBuiltInZoomControls(true);
mMapController = mMapView.getController();
mMapController.setZoom(13);
GeoPoint gPt = new GeoPoint(51500000, -150000);
mMapController.setCenter(gPt);
DummyOverlay dumOverlay = new DummyOverlay(this);
List<Overlay> listOfOverlays = mMapView.getOverlays();
listOfOverlays.clear();
listOfOverlays.add(dumOverlay);
}

public class DummyOverlay extends org.osmdroid.views.overlay.Overlay {

public DummyOverlay(Context ctx) {
super(ctx); // TODO Auto-generated constructor stub
}

@Override
protected void draw(Canvas c, MapView osmv, boolean shadow) {}

@Override
public boolean onDoubleTap(MotionEvent e, MapView mapView) {
// This stops the 'jump to, and zoom in' of the default behaviour
int zoomLevel = mMapView.getZoomLevel();
mMapController.setZoom(zoomLevel + 3);
return true;// This stops the double tap being passed on to the mapview
}
}

关于android - 如何在 mapview 中实现我自己的双击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8726034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com