【问题标题】:Google Maps Navigation - Using Google Navigation in Android ApplicationGoogle 地图导航 - 在 Android 应用程序中使用 Google 导航
【发布时间】:2013-07-05 13:54:19
【问题描述】:

在我的 Android 应用程序中实现 Google 导航时,我遇到了一个非常奇怪的问题。

我正在通过打开 URL 来实现 Google 导航 -

https://maps.google.co.in/maps?saddr=xxxxxxxxxxxxxxxxxx&daddr=xxxxxxxxxxxxx

其中 xxxx 表示源地址和目标地址。

使用隐式意图。通过在桌面上打开网页网址,我成功地导航到了该地点。

但是当我尝试在设备上运行应用程序时,该 url 将自身重定向到谷歌搜索页面。当我按下后退按钮时,我会得到一条从当前位置(根据谷歌地图)到使用反向地理编码获得的当前位置的导航路线。简而言之,上面提到的 url 并没有达到它的目的。

请帮我解决问题。如果 Google 导航实现有误,也请帮助我。

提前致谢

【问题讨论】:

    标签: android google-maps


    【解决方案1】:
    Intent intent = new Intent( Intent.ACTION_VIEW, 
                Uri.parse("http://ditu.google.cn/maps?f=d&source=s_d" +
                "&saddr=31.249351,121.45905&daddr=31.186371,121.489885&hl=zh&t=m&dirflg=d")); 
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK&Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
        intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
        startActivity(intent);
    

    您可以使用代码启动谷歌地图应用程序进行导航! ps:dirflg=d;您可以更改参数“d”表示开车,“w”表示步行,“r”表示乘公共汽车或其他。

    【讨论】:

      【解决方案2】:

      从 android 访问地图的理想方法是使用所需的源和目标位置详细信息从 Activity 触发 Intent,而不是像在桌面中那样尝试调用地图 url。意图大致如下:

      Intent navigation = new Intent(Intent.ACTION_VIEW, Uri
              .parse("http://maps.google.com/maps?saddr="
                      + Constants.latitude + ","
                      + Constants.longitude + "&daddr="
                      + latitude + "," + longitude));
      startActivity(navigation);
      

      这个earlier post 有更多关于这种方法的讨论。请检查它是否符合您的要求

      【讨论】:

      • 感谢托尼,我能够通过触发意图来解决问题。加载 web 视图没有帮助。
      【解决方案3】:
                  Intent navigation = new Intent(Intent.ACTION_VIEW, Uri
                          .parse("http://maps.google.com/maps?saddr="
                                  + latitude  + ","
                                  + longitude +
                                  "&daddr="
                                  + lat + "," + long1));
                 navigation.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK&Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
                 navigation.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
                  startActivity(navigation);
      

      【讨论】:

      • 虽然此代码 sn-p 可能是解决方案,但 including an explanation 确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
      猜你喜欢
      • 1970-01-01
      • 2011-03-31
      • 2015-12-08
      • 2012-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-06
      相关资源
      最近更新 更多