Android 如何实现GoogleMap.CancelableCallback

Android 如何实现GoogleMap.CancelableCallback,android,google-maps,callback,android-navigation,Android,Google Maps,Callback,Android Navigation,关于如何使用GoogleMap.CancelableCallback,本文没有做太多解释。我可以用它来通知我的应用程序,使用此回调取消了导航吗?有人能给我举个例子吗?由于导航是一个单独的应用程序,我了解到很难知道用户是否已根据取消导航或完成导航,但肯定有办法,因为优步司机应用程序能够根据乘客的请求取消行程。我对这个问题感到非常沮丧,非常需要帮助。我认为您不能将其用于导航,因为您调用导航是您调用的额外目的,而不是代码的一部分。 该回调用于动画取消: ,com.google.android.gms.

关于如何使用
GoogleMap.CancelableCallback
,本文没有做太多解释。我可以用它来通知我的应用程序,使用此回调取消了导航吗?有人能给我举个例子吗?由于导航是一个单独的应用程序,我了解到很难知道用户是否已根据取消导航或完成导航,但肯定有办法,因为优步司机应用程序能够根据乘客的请求取消行程。我对这个问题感到非常沮丧,非常需要帮助。

我认为您不能将其用于导航,因为您调用导航是您调用的额外目的,而不是代码的一部分。 该回调用于动画取消: ,com.google.android.gms.maps.GoogleMap.CancelableCallback)

你打电话

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

所以我认为你不能。我不知道Uber是怎么做的,但我认为它不会启动谷歌地图,也不会理解导航何时以及是否发生变化……

谷歌地图。
GoogleMap.CancelableCallback
会在地图任务成功完成或被用户取消时通知您

GoogleMap
中,您可以将此回调附加到
animateCamera
()以了解用户是否已取消
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
    }
});
如您所见,此回调不提供您正在寻找的功能,并且如前所述,如果您使用Google Maps执行导航,因为Google Maps是另一个应用程序,您无法知道用户是否已取消导航

正如@tyczj在的评论中所述,您可以使用Google Directions API,同时考虑到