通过将 waypoints 传递给 GoogleMaps android 创建电路路线
Create a circuit route by passing waypoints to GoogleMaps android
我正在开发通过 Intent
将 waypoints
发送到 Gmaps
app 的功能,以便用户可以通过我发送的自定义 waypoints
导航到目的地
我在嵌入式 Google Maps
中绘制这条路线时,我可以看到 Circuit route
,但是当我在 Gmaps
app 中看到相同的路线时, 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 中测试结果。
网络服务结果在路线计算器工具中测试:
我们通过 Directions API 获得的路线如下:
这些 waypoints 的 Google 地图 URL link 如下:
您使用 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
参数直接打开导航。
我正在开发通过 Intent
将 waypoints
发送到 Gmaps
app 的功能,以便用户可以通过我发送的自定义 waypoints
导航到目的地
我在嵌入式 Google Maps
中绘制这条路线时,我可以看到 Circuit route
,但是当我在 Gmaps
app 中看到相同的路线时, 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 中测试结果。
网络服务结果在路线计算器工具中测试:
我们通过 Directions API 获得的路线如下:
这些 waypoints 的 Google 地图 URL link 如下:
您使用 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
参数直接打开导航。