当用户点击带有 agm 的 link 时,使用起始地址和结束地址直接打开内置 android google 地图
Open inbuilt android google map directly with navigation using start and end address when user clicks on link withing agm
我的问题类似于How to open a mobile device's map app when a user clicks on a link?。
我有一个使用 angular 8 开发的应用程序,它在桌面浏览器、移动浏览器和一个使用基于 Chromium 的 Cordova(使用 Android 浏览器)的 andriod 应用程序中运行,以显示网络视图(iframe)。
我在我的 angular 应用程序中使用了 angular google 地图,我正在尝试实现类似的功能,如果用户在移动浏览器或安卓应用程序中打开我的应用程序(使用 cordova web 视图),我需要打开 native/inbuilt google 地图,以便在单击 link 时导航指定的源和目的地。在桌面上,我正在打开 google 地图网络视图。
下面是我的代码:
navigate(startAddress,destAddress){
if (navigator.userAgent.match(/(Android|BlackBerry|IEMobile)/) && !this.inIframe()) {
window.open(`geo:${this.latitude},${this.longitude}?q=${startAddress},${destAddress}`);
}else if ((navigator.platform.indexOf("iPhone") != -1)) {
window.open(`http://maps.apple.com/?q="${destAddress}`, '_system')
}else {
window.open(`https://www.google.com/maps/dir/?api=1&travelmode=driving&layer=traffic&origin=${startAddress}&destination=${destAddress}`);
}
}
inIframe() {
try {
return window.self !== window.top;
} catch (e) {
return true;
}
}
但我这里有一个问题,当我确定我的应用程序是在移动设备中打开时(第一个 if 语句),我正在使用 geo:${this.latitude},${this.longitude}?q=${startAddress},${destAddress}
打开内置的 google 地图导航。内置 google 地图已打开,但未直接显示给定来源和目的地的导航。
我不确定如何geo:
正确使用源地址和目标地址以及源地址和目标地址。
我看到 Android - launch google map via web url 可以帮助我直接打开内置的 google 地图,但是使用我的方法和开始和结束地址,应用程序会冻结并且不会直接显示导航。
能否请您验证我的方法并让我知道我哪里出错了?
省去麻烦并使用 https://github.com/dpa99c/phonegap-launch-navigator 为您做到这一点
在 Android 设备上:
- 如果 Google Android 的地图应用已安装并处于活动状态,URL 会在地图应用中启动 Google 地图并执行请求的操作。
- 如果 Google 地图应用未安装或被禁用,URL 在浏览器中启动 Google 地图并执行请求的操作。
以上是在您的代码中看起来不错的正常请求,因此您也可以对 android 使用 link 实现。
除此之外,您可能想查看 url 编码和构造栏:https://developers.google.com/maps/documentation/urls/url-encoding
我的问题类似于How to open a mobile device's map app when a user clicks on a link?。
我有一个使用 angular 8 开发的应用程序,它在桌面浏览器、移动浏览器和一个使用基于 Chromium 的 Cordova(使用 Android 浏览器)的 andriod 应用程序中运行,以显示网络视图(iframe)。
我在我的 angular 应用程序中使用了 angular google 地图,我正在尝试实现类似的功能,如果用户在移动浏览器或安卓应用程序中打开我的应用程序(使用 cordova web 视图),我需要打开 native/inbuilt google 地图,以便在单击 link 时导航指定的源和目的地。在桌面上,我正在打开 google 地图网络视图。
下面是我的代码:
navigate(startAddress,destAddress){
if (navigator.userAgent.match(/(Android|BlackBerry|IEMobile)/) && !this.inIframe()) {
window.open(`geo:${this.latitude},${this.longitude}?q=${startAddress},${destAddress}`);
}else if ((navigator.platform.indexOf("iPhone") != -1)) {
window.open(`http://maps.apple.com/?q="${destAddress}`, '_system')
}else {
window.open(`https://www.google.com/maps/dir/?api=1&travelmode=driving&layer=traffic&origin=${startAddress}&destination=${destAddress}`);
}
}
inIframe() {
try {
return window.self !== window.top;
} catch (e) {
return true;
}
}
但我这里有一个问题,当我确定我的应用程序是在移动设备中打开时(第一个 if 语句),我正在使用 geo:${this.latitude},${this.longitude}?q=${startAddress},${destAddress}
打开内置的 google 地图导航。内置 google 地图已打开,但未直接显示给定来源和目的地的导航。
我不确定如何geo:
正确使用源地址和目标地址以及源地址和目标地址。
我看到 Android - launch google map via web url 可以帮助我直接打开内置的 google 地图,但是使用我的方法和开始和结束地址,应用程序会冻结并且不会直接显示导航。 能否请您验证我的方法并让我知道我哪里出错了?
省去麻烦并使用 https://github.com/dpa99c/phonegap-launch-navigator 为您做到这一点
在 Android 设备上:
- 如果 Google Android 的地图应用已安装并处于活动状态,URL 会在地图应用中启动 Google 地图并执行请求的操作。
- 如果 Google 地图应用未安装或被禁用,URL 在浏览器中启动 Google 地图并执行请求的操作。
以上是在您的代码中看起来不错的正常请求,因此您也可以对 android 使用 link 实现。
除此之外,您可能想查看 url 编码和构造栏:https://developers.google.com/maps/documentation/urls/url-encoding