Android - 通过网页 url 启动谷歌地图

Posted

技术标签:

【中文标题】Android - 通过网页 url 启动谷歌地图【英文标题】:Android - launch google map via web 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 设备)与此问题相关,我也发现它很有帮助。 ***.com/questions/8443662/… 【参考方案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">

【讨论】:

以上是关于Android - 通过网页 url 启动谷歌地图的主要内容,如果未能解决你的问题,请参考以下文章

URL启动器与谷歌地图位置选择器冲突

谷歌地图跨平台网址在“应用内导航”后无法在 Android 上加载路线

android分享带有指示谷歌地图的可点击字符串url

在 Android 上通过 Intent 启动华为花瓣地图方向

应用启动时在 android 谷歌地图中获取当前位置(纬度,经度)

如何从谷歌地图扩展共享位置 URL?