早上好,伙计们,
我正在使用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
答案 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);
但我有可能在这里错过一些案例。我知道要做到这一点可能很棘手。