Как реализовать GoogleMap.CancelableCallback

документы не объясняют много о том, как использовать GoogleMap.CancelableCallback. Могу ли я использовать его, чтобы уведомить свое приложение об отмене навигации с помощью этого обратного вызова? Может ли кто-нибудь привести мне пример? Поскольку навигация — это отдельное приложение, я узнал, что трудно понять, отменил ли пользователь навигацию или завершил навигацию на основе это ТАК ответ, но должен быть способ, потому что приложение для водителей Uber имеет возможность отменить поездку на основе запроса пассажира. Я очень расстроен этим вопросом, пожалуйста, очень нужна помощь.


person The_Martian    schedule 17.11.2015    source источник


Ответы (2)


GoogleMap.CancelableCallback уведомляет вас об успешном завершении задачи карты или ее отмене пользователем.

В GoogleMap вы можете прикрепить этот обратный вызов к animateCamera (documentation), чтобы узнать, отменил ли пользователь animateCamera задание.

Вы можете реализовать это следующим образом:

map.animateCamera(yourCameraUpdate, new GoogleMap.CancelableCallback() {
    @Override
    public void onFinish() {
        // Code to execute when the animateCamera task has finished
    }

    @Override
    public void onCancel() {
        // Code to execute when the user has canceled the animateCamera task
    }
});

Как вы видите, этот обратный вызов не обеспечивает искомую функциональность, и как navigation-from-google-maps-app">Могу ли я определить, отменил ли пользователь навигацию из приложения Google Maps? говорит, что если вы используете Google Maps для выполнения своей навигации, поскольку Google Maps — это другое приложение, нет возможности вы можете узнать, отменил ли пользователь навигацию.

Как утверждает @tyczj в комментариях Могу ли я определить, отменил ли пользователь навигацию из приложения Google Maps, вы можете использовать Google Directions API с учетом лимиты использования.

person antonio    schedule 17.11.2015

Я не думаю, что вы можете использовать его для навигации, поскольку вы вызываете навигацию как дополнительное намерение вашего вызова, а не как часть вашего кода. Этот обратный вызов предназначен для отмены анимации: https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap#animateCamera(com.google.android.gms.maps.CameraUpdate, com.google.android.gms.maps.GoogleMap.CancelableCallback)

ты звонишь

myMap.animateCamera(ANIMATION_UPDATEPARAMS,GoogleMap.CancelableCallback{...});

так что я не думаю, что вы можете. Я не знаю, как работает Uber, но я не думаю, что он запускает карты Google и понимает, когда и если меняется навигация...

person N Dorigatti    schedule 17.11.2015