10

我想知道,是否可以在“谷歌导航”(谷歌地图导航)中放置几个​​“检查点”,查询遵循以下语法:"google.navigation:q=44.871709,-0.505704...."

如果可能的话,单独的两点的语法是什么?

一方面它有效,例如:"google.navigation:q=44.871709,-0.505704"

但我会设置一些检查点,例如:

 LatLng point1 = new LatLng(44.871709,-0.505704);
 LatLng point2 = new LatLng(43.572665,3.871447);                    
 Intent(android.content.Intent.ACTION_VIEW,Uri.parse("google.navigation:q="+
 point1.latitude+","+point1.longitude+";"+ point2.latitude+","+point2.longitude));  

我读了其他问题,他们说要使用这种语法:

"http://maps.google.com/maps?saddr="+"44.871709,-0.505704"+"&daddr="+"43.572665,3.871447"

使用上述解决方案,“谷歌导航”不会自动启动,我们必须选择一个应用程序“谷歌地图”,然后点击行程(在屏幕顶部)以启动“谷歌导航”。如果可能的话,我想避免它。

4

4 回答 4

20

这是一种抑制对话框并直接转到地图的方法。

String uri = "http://maps.google.com/maps?saddr="+"44.871709,-0.505704"+"&daddr="+"43.572665,3.871447";
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(uri));
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
startActivity(intent);

如果您还有问题,请告诉我。

更新

截至 2017 年 5 月,有一种更好的方法,即 Google Maps URLs API

https://developers.google.com/maps/documentation/urls/guide

使用此 API,您可以构建一个包含起点、目的地和航路点的 URL,并将其传递给意图

String uri = "https://www.google.com/maps/dir/?api=1&origin=Madrid,Spain&destination=Barcelona,Spain&waypoints=Zaragoza,Spain%7CHuesca,Spain&travelmode=driving&dir_action=navigate";
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(uri));
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
startActivity(intent); 
于 2013-05-28T04:43:36.827 回答
3

检查这两种方法,它们都适合我。

方法一:

    String packageName = "com.google.android.apps.maps";
    String query = "google.navigation:q=49.4839509,8.4903999";

    Intent intent = this.getPackageManager().getLaunchIntentForPackage(packageName);
    intent.setAction(Intent.ACTION_VIEW);
    intent.setData(Uri.parse(query));
    startActivity(intent);

方法二:

    String packageName = "com.google.android.apps.maps";
    String query = "google.navigation:q=49.4839509,8.4903999";

    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(query));
    intent.setPackage(packageName);
    startActivity(intent);
于 2016-04-20T13:57:18.200 回答
0

因为 point1.longitude 是 Double,你应该使用这个

String.valueOf(point1.latitude);

Intent(android.content.Intent.ACTION_VIEW,Uri.parse("google.navigation:q="+String.valueOf(point1.latitude)+","+String.valueOf(point1.longitude)+";"+String.valueOf( point2.latitude)+","+String.valueOf(point2.longitude)));  

或者你可以使用它,但它是一样的。

point1.toString().replace("lat/lng: (", "").replace(")", "")

point1.toString() 结果是 "lat/lng: (44.871709,-0.505704)",去掉 "lat/lng: (" and ")"。那么你可以得到你想要的结果。

Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://maps.google.com/maps?saddr="+point1.toString().replace("lat/lng: (", "").replace(")", "")+"&daddr="+point2.toString().replace("lat/lng: (", "").replace(")", ""))); 

或者你可以试试这个

Uri uri = Uri.parse("http://maps.google.com/mapssaddr="+point1.toString().replace("lat/lng: (", "").replace(")", "")+"&daddr="+point2.toString().replace("lat/lng: (", "").replace(")", ""));
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);

我希望这可以帮助你。

于 2013-05-28T04:30:26.633 回答
-1

你必须通过目的地位置。谷歌地图应用程序将自动获取您当前的位置进行导航。

Intent intent = new Intent(android.content.Intent.ACTION_VIEW,  Uri.parse("google.navigation:q=" + String.valueOf(destination latitude)
                        + "," + String.valueOf(destination longitude)));

startActivity(intent);
于 2015-10-30T06:46:17.467 回答