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

时间:2012-01-13 12:59:02

标签: android android-mapview zooming osmdroid

我正在使用Osmdroid创建离线地图

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

当用户使用捏合时,我想放大/缩小到只有特定的缩放级别而不是将缩放级别递增/递减1

有办法吗?我怎么能这样做?

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

由于

2 个答案:

答案 0 :(得分:1)

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

覆盖setZoomLevel看起来像一个选项,但我不认为它会起作用。正如我所相信的那样,代码需要以this.setZoomLevel样式写出来,而这种风格并不一致。

我认为您应该能够覆盖selectObject,这看起来就像是一个捏捏呼叫的地方setZoomLevel

您需要查看source code以了解如何进行必要的修改

答案 1 :(得分:1)

我处理了类似的问题here,并提供了针对自定义功能的代码。所以基本上,扩展我在答案中的内容,基本上就是这样做:

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

这只是将缩放级别提高2而不是仅仅1的示例。我还从内存中编写了上面的代码,因此如果您调用getController()来获取当前值,我不能100%确定和最大缩放级别,但我很确定就是这样。 mOsmv,以防万一你得到它,是osmdroid地图的一个实例。