我发现有几种方法可以通过纬度和经度打开地图路线:
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或至少标记目标地址?
答案 0 :(得分: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"
-路由存在。