Ionic 3 - 使用Google Maps / Apple Maps应用程序无需导航即可打开地理位置

时间:2018-04-16 07:27:44

标签: ios google-maps ionic-framework ionic3 apple-maps

zoomAndroid的{​​{3}}应用中,我需要使用iOS (如果已安装)或{打开特定的地理位置{1}}。我发现Ionic 3几乎也是如此。

  1. 我有没有办法选择不导航到指定位置,只使用Launch Navigator显示Google Maps
  2. 如果没有,还有其他方法可以实现这一目标吗?

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,这就是我想到的。有三个重要步骤

  1. 检查用户是否在iOS或Android上
    • 需要包含平台import { Platform } from 'ionic-angular';
  2. 如果它们在iOS上,请检查Google Maps
    • 我正在使用LaunchNavigator检查应用程序
      import { LaunchNavigator, LaunchNavigatorOptions } from '@ionic-native/launch-navigator';
  3. 使用我们的GPS参数打开相应的应用
    • 要打开外部应用,我们需要应用内浏览器
      import { InAppBrowser } from '@ionic-native/in-app-browser';

然后我们将拥有在iOS上打开Goog​​le Maps的所有功能(如果没有导航的话)

if (this.platform.is('ios')) {
      //try google maps first
      this.launchNavigator.isAppAvailable(this.launchNavigator.APP.GOOGLE_MAPS).then(
        response => {
          if(response) {
              window.open('comgooglemaps://?q=' + lat + ',' + lng + '(' + marker_name + ')', '_system');
          }
          else {
              window.open('maps://?q=' + lat + ',' + lng, '_system');
          }
        },
        failure => {
          //check failed;
        }
      );
}
else if (this.platform.is('android')) {
      window.open('geo://' + lat + ',' + lng + '?q=' + lat + ',' + lng + '(' + marker_name + ')', '_system');
}

答案 1 :(得分:0)

试试这个,它让用户选择要打开的应用导航(waze 或 map 或...),并在 纬度 上添加标记>经度给定:

  import { Platform } from '@ionic/angular';

...

  constructor(
    public platform: Platform
  ) {
  }

  public openMapsApp(lat: number, lng: number) {
    const geocoords = lat + ',' + lng;

    if (
      this.platform.is('ios')
      && this.platform.is('iphone')
      && this.platform.is('ipad')
    ) {
      window.open('maps://?q=' + geocoords, '_system');
      return;
    }
    
    if (this.platform.is('desktop')) {
      window.open('https://www.google.com/maps?q=' + geocoords);
      return;
    }

    const label = encodeURI('7 East Street'); // encode the label!
    window.open('geo:' + geocoords + '?q=' + geocoords + '(' + label + ')', '_system');

  }