当用户点击带有 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 地图并执行请求的操作。

https://www.google.com/maps/dir/?api=1&origin=Google+Pyrmont+NSW&destination=QVB&destination_place_id=ChIJISz8NjyuEmsRFTQ9Iw7Ear8&travelmode=walking

以上是在您的代码中看起来不错的正常请求,因此您也可以对 android 使用 link 实现。

除此之外,您可能想查看 url 编码和构造栏:https://developers.google.com/maps/documentation/urls/url-encoding