Android Google Map-如果未找到目标方向路线,则进行回退

时间:2018-12-20 04:45:51

标签: android google-maps android-intent google-maps-android-api-2 android-location

我发现有几种方法可以通过纬度和经度打开地图路线:

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 个答案:

答案 0 :(得分:1)

您可以使用HttpUrlConnectionDirections 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"-路由存在。