首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Osmdroid进行缩放

用Osmdroid进行缩放
EN

Stack Overflow用户
提问于 2011-09-28 12:36:30
回答 4查看 7.6K关注 0票数 13

我编写了一个映射应用程序,它有两个活动,一个活动显示Google视图,另一个使用osmdroid3.0.5jar显示等效视图。

到目前为止,我只在模拟器上进行测试,功能在显示区域和覆盖数据方面完全相同。现在我已经在一个真正的姜饼设备上运行了这个应用程序,我注意到Google活动似乎支持缩放,而Osmdroid则不支持缩放。

我还没有编写任何特定的代码来缩小谷歌侧或Osmdroid的缩放。这两个活动都实现了OnTouchListener。这两个活动都有一个用于OnTouch的存根,如:

代码语言:javascript
复制
@Override
public boolean onTouch(View v, MotionEvent e) {
    // chain it for now
    return false;
}

我在Osmdroid活动中的mapview属于类:org.osmdroid.views.MapView

有没有人知道如何使用osmdroid进行缩放,或者知道一个使用osmdroid的示例应用程序,我可以学习并适应我的应用程序?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-09-29 03:24:15

Osmdroid具有缩放功能。您需要设置一个手势器来检查夹点动作,此时您应该调用osmdroid中的缩放函数。我相信osmdroid 3.0.5它有点像

mOsm.getController.setZoomLevel(someNumber) (mOsm是地图视图的一个实例)。

我有变焦功能为相反的捏(你的手指开始接近,然后展开)。我建议使用MotionEvent (就像您目前正在做的那样),并执行如下操作:

代码语言:javascript
复制
boolean finished = false;

@Override
public boolean onTouch(View v, MotionEvent e) {

    switch (e.getAction()) {

        case MotionEvent.ACTION_DOWN:
            finished = false;
            break;

        case MotionEvent.ACTION_MOVE:
            finished = false;
            break;

        case MotionEvent.ACTION_UP:
            //action is finishing at this point, so now I can do my refreshActionOnMap();
            if (!finished) 
                refreshActionOnMap();
            break;
    }
    return true;
}

我添加的代码处理的是夹点--完成的布尔值是我在我的程序中实现的,用来确定何时刷新映射。这应该能帮你更多的忙。

这里是对此的进一步解释。

如果您正在寻找不同的东西,那么请尝试阅读这里。从2010年6月起,Android就一直在支持紧缩行动。

票数 5
EN

Stack Overflow用户

发布于 2012-01-20 13:35:53

代码语言:javascript
复制
MapView.setBuiltInZoomControls(true);
MapView.setMultiTouchControls(true);
票数 39
EN

Stack Overflow用户

发布于 2013-03-01 13:59:37

可以不是放大到地图中心,而是放大到用户的中间两个手指。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7583281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档