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

Posted

技术标签:

【中文标题】谷歌地图跨平台网址在“应用内导航”后无法在 Android 上加载路线【英文标题】:Google maps cross-platform URL fails to load route on Android after "in app navigation" 【发布时间】:2020-12-19 09:07:01 【问题描述】:

我有一个 Angular 9 + Ionic 5 应用程序,部署为 PWA、androidios 应用程序。 我们使用谷歌的通用、跨平台 URL 来启动谷歌地图, 如此处所述:https://developers.google.com/maps/documentation/urls/get-started

在谷歌地图中打开位置的功能:

export const openMaps = (lat: number, lng: number) => 
  const url = `https://www.google.com/maps/search/?api=1&query=$lat%2C$lng`;
  return window.open(url, '_top').focus();
;

这在 PWA 和 IOS 应用程序中运行良好,但是在 Android 中,地址按预期加载到浏览器中后,在 Route planner 中支持开始位置并点击“IN APP NAVIGATION”后无法启动导航。 (如果我提供带有方向的链接以自动开始导航,也会发生同样的情况)。

点击“IN APP NAVIGATION”后显示错误: 网页位于 intent://maps.app.goo.gl/?link=https://www.google.com/maps/dir//50.253722,10.958954/@49.9145812,10.9626145,8z/data%3D!4m2! 4m1!3e0!11m1!6b1?entry%3Dml&apn=com.google.android.apps.maps&amv=914018424&isi=585027354&ibi=com.google.Maps&ius=comgooglemapsurl&utm_campaign=ml_promo&ct=ml-nav-nopromo-dr-nlu-wv-msc&mt= 8&pt=9008&efr=1#Intent;package=com.google.android.gms;scheme=https;S.browser_fallback_url=https://play.google.com/store/apps/details%3Fid%3Dcom.google.android。 apps.maps&pcampaignid%3Dfdl_long&url%3Dhttps://www.google.com/maps/dir//50.253722,10.958954/@49.9145812,10.9626145,8z/data%253D!4m2!4m1!3e0!11m1!6b1%3Fentry%253Dml&min_version% 3D914018424;结束;无法加载,因为:

net::ERR_UNKNOWN_URL_SCHEME

有人知道这里出了什么问题吗? URL 语法应该是正确的,但似乎谷歌地图意图在 Android 上加载了一个未知的方案。

【问题讨论】:

【参考方案1】:

解决了!问题是window.open(url, '_top').focus();

这些链接应与target: _system.一起使用

如果是混合 Ionic 应用程序,还推荐使用以下插件! https://ionicframework.com/docs/native/in-app-browser

【讨论】:

以上是关于谷歌地图跨平台网址在“应用内导航”后无法在 Android 上加载路线的主要内容,如果未能解决你的问题,请参考以下文章

在 Play 商店发布应用程序后,谷歌地图无法正常工作

为啥谷歌地图在几次回帖后冻结页面

如何更改谷歌地图标记上的图标

在我的 Reactjs 网络应用程序中集成谷歌地图后,如何获得“纬度”和“经度”?

谷歌中国地图使用哪个网址?

为啥手机上不能用谷歌地图