【问题标题】:Android - launch google map via web urlAndroid - 通过网页 url 启动谷歌地图
【发布时间】:2011-06-06 06:17:41
【问题描述】:

在 iPhone 上,maps.google.com 网址被本地 google 地图应用程序截获并加载。我想在 Android 上做同样的事情,但谷歌地图正在浏览器中加载。

那么,在网页中,是否可以在 Android 谷歌地图应用程序中打开这个 url http://maps.google.com/maps?saddr=brighton&daddr=timbuktu

我从this 问题中看到,您可以通过 Intent 从另一个应用程序执行此操作。你能从浏览器中触发这些 Intent 吗?

编辑 - 在进一步测试中,我发现用户会被提示在浏览器或地图应用程序中打开指向 maps.google.maps 的标准 html 链接的链接:

<a href="http://maps.google.com/maps?saddr=brighton&daddr=timbuktu">show route</a>

我遇到了问题,因为我正在使用 javascript 通过 Location API 回调设置 window.location.href(这样我就可以获取用户的位置,然后打开地图)。我为此开了一个bug report

【问题讨论】:

  • 请注意,从 iOS 6 开始,您必须将所有地图请求从“maps.google.com”转换为“maps.apple.com”才能激活 iOS 地图。真的很烦人。
  • 还有另一个问题(适用于 Android 设备)与此问题相关,我也发现它很有帮助。 stackoverflow.com/questions/8443662/…

标签: android browser android-intent


【解决方案1】:

在地址栏中输入 geo:0,0?q=google 会打开地图活动并搜索附近的 google。

我认为这将通过页面中的链接起作用,但尚未检查。

此处提供可访问意图的完整列表: http://developer.android.com/guide/appendix/g-app-intents.html

【讨论】:

  • 奇怪的是,这不适用于 Nexus One。即使支持,geo URI 目前也不支持 saddr/daddr 参数。 (tools.ietf.org/html/draft-mayrhofer-geo-uri-00)
  • 我用页面中的链接进行了测试,它确实可以在 Nexus One 上运行(您只是无法在 URL 栏中输入它)。无论如何,我仍然无法使用它来获取路线。
  • 奇怪,我可以在 HTC 的浏览器地址栏中输入它。无论如何,就方向而言,google.navigation:q=starbucks 意图不可靠,但我听说它并非无处不在。
  • 是的,当嵌入超链接时,它可以在 Nexus One 上运行:测试
  • 对此的支持充其量是令人沮丧的。我的研究没有任何有价值的东西,还有其他想法吗?
【解决方案2】:

此时我使用了一个 javascript 函数来更改以下模板:

'urlTemplates': {
            "default": "http://maps.google.com?q={streetAddress} {addressLocality} {addressRegion} {postalCode} {addressCountry}",
            "ios": "maps:?saddr=Current Location&daddr={streetAddress} {addressLocality} {addressRegion} {postalCode} {addressCountry}",
            "android": "geo:{streetAddress} {addressLocality} {addressRegion} {postalCode} {addressCountry}",
            "windows_phone7": "maps:{streetAddress} {addressLocality} {addressRegion} {postalCode} {addressCountry}",
            "windows_phone8": "bingmaps:?where={streetAddress} {addressLocality} {addressRegion} {postalCode} {addressCountry}",
            "blackberry": "javascript:blackberry.launch.newMap({'address':{'address1':'{streetAddress}','city':'{addressLocality}','country':'{addressCountry}','stateProvince':'{addressRegion}','zipPostal':'{postalCode}'}});"

我根据设备获得了哪些信息,我不记得从哪里获得所有模板,对此我很抱歉,之后我使用 window.location.href 打开地址。

希望这会对您有所帮助。因为当时我需要这个我花了很多时间研究它。

【讨论】:

    【解决方案3】:
    <html>
      <body>
      <H1>
       <a href="geo:42,2?z=8">Click here for maps</a>
     </h1>
       <BR><BR>
       <a href="geo:53,-9?saddr=(53,-9)&daddr=(42,4)">Click here for route maps</a>
     </body>
    </html>
    

    第一次点击会在 Android 上正确加载 Google 应用并进行缩放。在第二次单击中,我试图复制一个两点路由(起始地址-> 目标地址),但它似乎不起作用。

    【讨论】:

      【解决方案4】:

      我确实为此受了很多苦,但终于得到了答案。
      不要使用href,它不起作用。

      对于导航 - window.open("google.navigation:q=23.3728831,85.3372199&mode=d" , '_system');

      对于搜索 - window.open("geo:0,0?q=pizza" , '_system');

      在这里阅读 - https://developers.google.com/maps/documentation/android/intents

      【讨论】:

        【解决方案5】:

        我正在使用这个链接,它工作得很好

        <a href='https://www.google.com/maps/place/{{device?.gps_lat}},{{device?.gps_long}}' target="_blank">
        

        【讨论】:

          猜你喜欢
          • 2011-08-16
          • 2013-08-15
          • 2019-11-08
          • 1970-01-01
          • 1970-01-01
          • 2010-11-15
          • 1970-01-01
          • 1970-01-01
          • 2016-05-25
          相关资源
          最近更新 更多