Android Google map - 如果找不到目的地方向路线,则回退

Posted

技术标签:

【中文标题】Android Google map - 如果找不到目的地方向路线,则回退【英文标题】:Android Google map - fallback if destination direction route not found 【发布时间】:2019-05-20 14:42:01 【问题描述】:

我发现按经纬度打开地图路线的方法很少:

String uri = "http://maps.google.com/maps?daddr=" + destLat + "," + destLong + " (" + safeURLString + ")"; //first way
//String uri = "https://www.google.com/maps/search/?api=1&query=" + destLat + "," + destLong; //second way
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
intent.setPackage("com.google.android.apps.maps");
if (intent.resolveActivity(getPackageManager()) != null) 
    startChildActivity(intent);

问题是有时第一种方式能够找到路线,或者有时只有第二种方式能够在没有路线时标记目的地。

是否可以检查是否找不到路由然后回退/回调以尝试第二个 url 或至少标记目的地?

【问题讨论】:

【参考方案1】:

您可以使用HttpUrlConnection 和Directions API 来测试路由是否存在:

https://maps.googleapis.com/maps/api/directions/json?origin=<originLat>,<originLon>&destination=<destLat>,<destLon>&key=<YOUR_DIRECTIONS_API_KEY>

如果HttpUrlConnection 响应如下:


   "geocoded_waypoints" : [ ,  ],
   "routes" : [],
   "status" : "ZERO_RESULTS"

那么该路线不存在,您应该在没有路线时使用第二种方式标记目的地。否则,当HttpUrlConnection 响应时喜欢


   "geocoded_waypoints" : [

   <lines of response here> 
   ...

   ],
   "status" : "OK"

...

路线存在,您可以使用第一种方式找到路线。因此,通过HttpUrlConnection 使用Directions API 并检查"status" 标签:如果"status" : "OK" - 路由存在。

【讨论】:

以上是关于Android Google map - 如果找不到目的地方向路线,则回退的主要内容,如果未能解决你的问题,请参考以下文章

Android Google Maps SDK,如果越过北极或南极,则不填充圆圈

如果更改包 ID 但旧包 ID 工作,Google Maps Api 无法识别/工作 -Android 工作室

Android Google Maps v2 - 为 myLocation 设置缩放级别

Android Studio Google Maps 可在 Android 设备上运行,但不能在模拟器上运行

如何在现有的旧版Android项目中使用最新的API添加Google Map?

如何使地图在 google maps api for android 中离线工作?