我正在尝试创建一个应用程序,它将启动一个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);
答案 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);