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