通过将 waypoints 传递给 GoogleMaps android 创建电路路线

Create a circuit route by passing waypoints to GoogleMaps android

我正在开发通过 Intentwaypoints 发送到 Gmapsapp 的功能,以便用户可以通过我发送的自定义 waypoints 导航到目的地

我在嵌入式 Google Maps 中绘制这条路线时,我可以看到 Circuit route ,但是当我在 Gmapsapp 中看到相同的路线时, Circuit坏了。

我的代码:

String srcAdd = "saddr="+latLngArrayList.get(0).latitude+","+latLngArrayList.get(0).longitude;
        String desAdd = "&daddr="+latLngArrayList.get(latLngArrayList.size() - 1).latitude+","+latLngArrayList.get(latLngArrayList.size() - 1).longitude;
        String wayPoints = "";

        for (int j = 1; j < latLngArrayList.size() - 1; ++j) {

            wayPoints =wayPoints+"+to:"+latLngArrayList.get(j).latitude+","+latLngArrayList.get(j).longitude;
        }

        String link="https://maps.google.com/maps?"+srcAdd+desAdd+wayPoints;
        final Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(link));
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
        startActivity(intent);

线路

无环路

我建议看看 Google Maps URLs API that was launched in May 2017. This API provides universal cross-platform links that you can use in your applications to launch intents for Google Maps. One of the supported modes is directions mode. You can read about it here

当您使用路线 API 并发布 waypoints 的示例坐标时,我能够在网络服务和 Google 地图 URL 中测试结果。

网络服务结果在路线计算器工具中测试:

https://directionsdebug.firebaseapp.com/?origin=19.07598304748535%2C72.87765502929688&destination=19.07598304748535%2C72.87765502929688&waypoints=18.7284%2C73.4815%7C18.6876%2C73.4827%7C18.5839587%2C73.5125092%7C18.5369444%2C73.4861111%7C18.480567%2C73.491658

我们通过 Directions API 获得的路线如下:

这些 waypoints 的 Google 地图 URL link 如下:

https://www.google.com/maps/dir/?api=1&origin=19.07598304748535,72.87765502929688&destination=19.07598304748535,72.87765502929688&waypoints=18.7284,73.4815%7C18.6876,73.4827%7C18.5839587,73.5125092%7C18.5369444,73.4861111%7C18.480567,73.491658&travelmode=driving

您使用 Google 地图 URL 获得的路线显示在该屏幕截图中。

如您所见,两条路线相同,因此路线 API 和 Google 地图 URL 可以按预期工作。我认为您应该更改代码以使用 Google 地图网址:

String srcAdd = "&origin=" + latLngArrayList.get(0).latitude + "," + latLngArrayList.get(0).longitude;  
String desAdd = "&destination=" + latLngArrayList.get(latLngArrayList.size() - 1).latitude + "," + latLngArrayList.get(latLngArrayList.size() - 1).longitude;
String wayPoints = "";  

for (int j = 1; j < latLngArrayList.size() - 1; j++) {
    wayPoints = wayPoints + (wayPoints.equals("") ? "" : "%7C") + latLngArrayList.get(j).latitude + "," + latLngArrayList.get(j).longitude;
}
wayPoints = "&waypoints=" + wayPoints; 

String link="https://www.google.com/maps/dir/?api=1&travelmode=driving"+srcAdd+desAdd+wayPoints;  
final Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(link));  
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");  
startActivity(intent);  

此外,您可以使用 dir_action=navigate 参数直接打开导航。