问题描述
我有一个Angular 9 + Ionic 5应用程序,已部署为PWA,Android和IOS应用程序。
我们使用Google的通用跨平台URL来启动Google Maps,
如此处所述:https://developers.google.com/maps/documentation/urls/get-started
功能在Google地图中打开位置:
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中按预期方式将地址加载到浏览器中之后,在支持路线规划器中的起始位置并点击“应用内导航”后,它无法启动导航。 (如果我提供了带有“方向”的链接以自动开始导航,也会发生这种情况。)
点击“应用内导航”后显示错误:
该网页位于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- 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,8z/data%253D!4m2!4m1!3e0!11m1!6b1%3Fentry%253Dml&min_version% 3D914018424;结束;无法加载,因为:
net :: ERR_UNKNowN_URL_SCHEME
有人知道这里出了什么问题吗? URL语法应该正确,但似乎google maps intent在Android上加载了未知方案。
解决方法
解决了!问题是window.open(url,'_top').focus();
这些链接应与target: _system.
在混合离子应用程序的情况下,还建议使用以下插件! https://ionicframework.com/docs/native/in-app-browser