如何实施 GoogleMap.CancelableCallback

How to implement GoogleMap.CancelableCallback

docs don't explain much on how to use GoogleMap.CancelableCallback. Can I use it to notify my app that navigation has been cancelled using this callback? Can someone give me an example? Since the navigation is a separate app I learned it is hard to know if the user has cancelled the navigation or finished the navigation based on this SO answer 但必须有办法,因为优步 driver 应用程序可以根据乘客的请求取消行程。我对这个问题很沮丧,急需帮助。

我认为您不能将它用于导航,因为您将导航称为调用的额外意图,而不是代码的一部分。 该回调用于动画取消: 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 地图并了解导航何时以及是否发生变化...

当地图任务成功完成或被用户取消时,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
    }
});

如您所见,此回调不提供您正在寻找的功能,正如 Can i detect if a user canceled navigation from Google Maps App 所说,如果您使用 Google 地图执行导航,因为 Google 地图是一个不同的应用程序,您无法知道用户是否取消了导航。

正如@tyczj 在 Can i detect if a user canceled navigation from Google Maps App 的评论中所述,您可以使用 Google 方向 API 并考虑 使用限制