各位早上好,
我使用nutiteq sdk呈现openstreet地图的离线地图,并使用离线路由。
一旦设备收到GPS信号,地图的中心点就被移动到方位和位置管理器返回的位置。我所说的activtiy有一个onlocationchanged()方法,当用户的位置改变时,它总是被调用。
到目前为止,在这一点上,我试图实现一个功能,这是相当类似于谷歌地图。如果用户通过手势移动地图,onlocationchanged()方法的某些部分将被禁用。因此地图中心点不再更新,因为用户希望查看地图上的其他位置。按下按钮后,就像在谷歌一样,路由是连续的。
我的问题是,我不能在我的相关活动中定义这样的手势:
http://mrbool.com/how-to-work-with-swipe-gestures-in-android/28088
在与开发nutiteq sdk的人交谈之后,他们告诉我在一个新的自定义mappview类中重写ontouchevent()函数。好吧,这有点用,但我必须重写每个手势,例如滚动地图。
毕竟,如果地图是通过投掷手势或类似的动作移动的,我只想切换布尔值false。
你知道有什么办法可以解决我的问题吗?
这里是一个链接到nutiteq的论坛,在那里我之前发布了我的问题:
https://groups.google.com/forum/#!topic/nutiteq-dev/x55SMOnsuk0

最佳答案

我会尝试以下操作:
a)创建自己的地图视图,如下所示:https://gist.github.com/nutiteq/b546aaac8cdcfa6a7f09。它只是重复使用普通的触摸处理程序。
b)在布局XML和代码中使用MyMapView而不是MapView。
c)在您的位置听众:

        @Override

        public void onLocationChanged(Location location) {

           if(!mapView.isTouched())

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

        }

d)打开“GPS跟随”时,使用mapView.setTouched(false);重置触摸状态
但我可能漏掉了一些案子。我知道要把事情做好是很难的。

10-07 19:32