【问题标题】:Using Google Maps Direction Service on Android在 Android 上使用 Google 地图方向服务
【发布时间】:2016-12-22 16:32:05
【问题描述】:

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

到目前为止,我尝试使用this answer 中的内容从一个桥到另一个桥的路线,但它没有用。当谷歌地图应用程序打开时,它说没有找到路线。起点和终点字段填写我点的经纬度。

我做错了什么?还有其他方法吗?

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

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);

【问题讨论】:

  • 如果您发布MCVE,您将更有可能在这个问题上获得帮助
  • 你在uri中有一个空格
  • @cricket_007,删除了空间,没有任何改变。错误不断发生
  • 即使我在浏览器中输入那个填写好的网址,它也不起作用。 maps.google.com/…
  • 哦,我想我意识到出了什么问题。正如你所说,坐标来自无处。我从地理编码地址中得到它们,我猜它们失败了,我现在才意识到这一点。

标签: android google-maps


【解决方案1】:

快速浏览一下就知道您的代码可以工作,但您的坐标点并没有什么特别之处,所以如果不存在路线,我不会感到惊讶。

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

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

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);

【讨论】:

    【解决方案2】:

    您编写的代码是正确的。这些坐标有问题。 尝试改变坐标,看看魔法。它完美地工作。 例如:

    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,17403。正确:41.40338、2.17403。
    在经度坐标之前列出您的纬度坐标。
    检查纬度坐标中的第一个数字是否在 -90 到 90 之间。
    检查经度坐标中的第一个数字是否介于 -180 和 180 之间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-22
      相关资源
      最近更新 更多