在Android上使用Google地图指南服务

时间:2016-12-22 16:32:05

标签: android google-maps

我正在尝试创建一个应用程序,它将启动一个Google Maps Intent,它将显示指向A的路线,通过B点和C点。我有地址和这些点的LatLng。

到目前为止,我试图使用this answer中的内容从一个pont到另一个路径,但它不起作用。当谷歌地图应用程序打开时,它表示没有找到路由。原点和目标字段填充了我的点的纬度和经度。

我做错了什么?还有另一种方法吗?

编辑:我用来启动意图的代码:

double ori_latitude = -90.0000000;
double ori_longitude = -60.0000000;
double dest_latitude = -90.0000000;
double dest_longitude = -54.0000000;

String uri = String.format(Locale.ENGLISH, "http://maps.google.com/dir ?saddr=%f,%f&daddr=%f,%f", ori_latitude, ori_longitude, dest_latitude, dest_longitude);
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);

2 个答案:

答案 0 :(得分:0)

您写的代码是正确的。这些坐标存在问题。 尝试更改坐标,看看魔术。它完美地运作。 例如:

double ori_latitude =  34.052222;
double ori_longitude = -118.243611;
double dest_latitude = 37.322778;
double dest_longitude = -122.031944;

另外,请查看规则 Google Maps

  

格式化坐标的提示
  以下是格式化坐标的一些提示,以便它们适用于Google地图:
  使用度数符号代替" d"。
  使用句点作为小数,而不是逗号   不正确:41,40338,2,147403。正确:41.40338,2.17403   在经度坐标之前列出纬度坐标   检查纬度坐标中的第一个数字是否介于-90和90之间   检查经度坐标中的第一个数字是否介于-180和180之间。

答案 1 :(得分:0)

只需快速浏览一下,您的代码就可以正常工作,但您的坐标无处可寻,所以如果没有路由,我不会感到惊讶。

通过快速测试,这对我有用。

西雅图,华盛顿州,旧金山,加利福尼亚州

double[] origin = { 47.605617, -122.332137 };
double[] dest = { 37.774821, -122.419462 };

Uri.Builder builder = new Uri.Builder()
    .scheme("http")
    .authority("maps.google.com/maps")
    .appendQueryParameter("saddr", String.format(Locale.ENGLISH, "%f,%f", origin[0], origin[1]))
    .appendQueryParameter("daddr", String.format(Locale.ENGLISH, "%f,%f", dest[0], dest[1]));

Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(builder.build().toString()));
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");

startActivity(intent);