Android 如何覆盖osmdroid中的默认收缩缩放?

Android 如何覆盖osmdroid中的默认收缩缩放?,android,android-mapview,zooming,osmdroid,Android,Android Mapview,Zooming,Osmdroid,我正在使用创建脱机地图 现在,我想为离线地图实现我自己的收缩缩放功能 当用户使用pinch时,我只想放大/缩小到特定的缩放级别,而不是将缩放级别增加/减少1 有办法吗?我该怎么办 p.S:是的,有缩放控件,但我想让缩放功能更直观 谢谢我认为这样做的方法是扩展MapView 重写setZoomLevel看起来像是一个选项,但我认为它不会起作用。我相信代码需要以this.setZoomLevel的风格编写,但这种风格并不一致 我认为您应该能够覆盖selectObject,它看起来像是一个按压触发调用

我正在使用创建脱机地图

现在,我想为离线地图实现我自己的收缩缩放功能

当用户使用pinch时,我只想放大/缩小到特定的缩放级别,而不是将缩放级别增加/减少1

有办法吗?我该怎么办

p.S:是的,有缩放控件,但我想让缩放功能更直观


谢谢

我认为这样做的方法是扩展MapView

重写
setZoomLevel
看起来像是一个选项,但我认为它不会起作用。我相信代码需要以
this.setZoomLevel
的风格编写,但这种风格并不一致

我认为您应该能够覆盖
selectObject
,它看起来像是一个按压触发调用的地方
setZoomLevel


您将需要检查以了解如何进行nessasary修改

我处理了一个类似的问题,并提供了关于pinch的自定义功能的代码。因此,基本上,在我的答案中扩展,只是基本上做:

int currentZoomLevel = mOsmv.getController().getZoomLevel();
if (currentZoomLevel < (mOsmv.getControler().getMaxZoomLevel()) - 2) 
    mOsmv.getController().setZoomLevel(currentZoomLevel + 2);
int currentZoomLevel=mOsmv.getController().getZoomLevel();
如果(currentZoomLevel<(mOsmv.getController().getMaxZoomLevel())-2)
mOsmv.getController().setZoomLevel(currentZoomLevel+2);

这只是将缩放级别从1增加到2的一个示例。我还从内存中编写了上面的代码,所以我不能100%确定是否调用
getController()
来获取当前和最大的缩放级别,但我很确定就是这样
mOsmv
,以防万一,它是osmdroid映射的一个实例

感谢您的链接,我将在周一实现它,基本上我希望在Osmdroid的
mapview.java
中进行更改,这样我就可以创建一个新的jar文件了。没问题!如果回答了您的问题,请记住标记为正确答案:)