Дополнительная Распознавания Жестов Для Андроид


Доброе утро, ребята,

Я использую NUTITEQ SDK для отображения автономных карт openstreet maps, а также для использования автономной маршрутизации.

Как только устройство получает сигнал gps, центральная точка карты перемещается в то место, которое возвращается диспетчером ориентации и определения местоположения. Activtiy, о котором я говорю, имеет метод onLocationChanged (), который всегда вызывается при изменении местоположения пользователя.

Пока все хорошо, на данный момент я пытаюсь реализуйте функцию, которая очень похожа на google maps. Если пользователь перемещает карту жестом, некоторые части метода onLocationChanged () отключаются. Таким образом, центральная точка карты больше не обновляется, потому что пользователь хочет посмотреть где-то еще на карте. После нажатия кнопки, как и в google, маршрутизация продолжается.

Моя проблема в том, что я не могу определить такие жесты в своей деятельности, как этот: http://mrbool.com/how-to-work-with-swipe-gestures-in-android/28088

После разговора с ребятами, разработавшими NUTITEQ SDK, они сказали мне переопределить функцию onTouchEvent () в новом пользовательском классе mapView. Ну, это вроде как работает, но мне приходится переписывать каждый жест, например прокручивать карту.

В конце концов, я просто хочу переключить логическое значение false, если карта перемещается жестом броска или чем-то подобным.

Знаете ли вы какую-либо альтернативу, которая мог бы решить мою проблему?

Вот ссылка на форум Nutiteq, где я ранее разместил свою проблему: https://groups.google.com/forum/#! topic/nutiteq-dev/x55SMOnsuk0

1 3

1 ответ:

Я бы попробовал следующее:

A) создайте собственное представление карты следующим образом: https://gist.github.com/nutiteq/b546aaac8cdcfa6a7f09 . Он просто повторно использует обычные обработчики прикосновений.

B) используйте MyMapView вместо MapView в XML и коде компоновки.

C) в вашем LocationListener:

        @Override

        public void onLocationChanged(Location location) {

           if(!mapView.isTouched())

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

        }

D) при включении функции "GPS follow" сбросить состояние касания с помощью mapView.setTouched(false);

Но, возможно, я упускаю здесь какой-то случай. Я знаю, что это может быть сложно сделать правильно.