2

各位早上好

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

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

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

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

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

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

你知道任何可以解决我的问题的替代方案吗?

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

4

1 回答 1

0

我会尝试以下:

a)创建自己的地图视图,如下所示: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);

但我可能会在这里错过一些案例。我知道把它做好可能很棘手。

于 2014-04-30T08:35:45.817 回答