Android附加手势检测

时间:2014-04-30 06:18:59

标签: android google-maps gesture-recognition nutiteq

早上好,伙计们,

我正在使用Nutiteq SDK渲染openstreet地图的离线地图,并使用离线路由。

一旦设备获得gps信号,地图的中心点就会移动到方向和位置管理器返回的位置。我正在谈论的活动有一个onLocationChanged()方法,当用户的位置发生变化时,它总是被调用。

到目前为止一直很好,此时我正在尝试实现一个与谷歌地图非常相似的功能。如果用户通过手势移动地图,则onLocationChanged()方法的某些部分将被禁用。因此,地图中心点不再更新,因为用户想要查看地图上的其他位置。按下一个buttong后,就像谷歌一样,路由连续。

我的问题是我无法像我这样在我的关注活动中定义这样的手势: http://mrbool.com/how-to-work-with-swipe-gestures-in-android/28088

在与开发Nutiteq SDK的人交谈后,他们告诉我在新的自定义mapView类中覆盖onTouchEvent()函数。嗯,这种方法有效,但我必须重写每一个手势,例如滚动地图。

毕竟我只是想通过一个手势或类似的东西移动地图来切换布尔值假。

你知道任何可能解决我问题的方法吗?

这是Nutiteq论坛的链接,我在前面发布了我的问题: https://groups.google.com/forum/#!topic/nutiteq-dev/x55SMOnsuk0

1 个答案:

答案 0 :(得分:1)

我会尝试以下:

a)创建自己的mapview,如下所示:https://gist.github.com/nutiteq/b546aaac8cdcfa6a7f09。它只是重用普通的触摸处理程序。

b)在布局xml和代码中使用MyMapView而不是MapView。

c)在LocationListener中:

        @Override

        public void onLocationChanged(Location location) {

           if(!mapView.isTouched())

                 mapView.setFocusPoint(mapView.getLayers().getBaseProjection().fromWgs84(location.getLongitude(), location.getLatitude()));

        }

d)当您打开“GPS跟随”时,使用mapView.setTouched(false);

重置触摸状态

但我有可能在这里错过一些案例。我知道要做到这一点可能很棘手。