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 启动谷歌地图的主要内容,如果未能解决你的问题,请参考以下文章
谷歌地图跨平台网址在“应用内导航”后无法在 Android 上加载路线
在 Android 上通过 Intent 启动华为花瓣地图方向