当位置不可用时,Ionic 2 Geolocation设置另一个位置

时间:2017-01-24 10:12:10

标签: google-maps angular ionic-framework geolocation ionic2

    Geolocation.getCurrentPosition().then((position) => {

      let latLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
      //let latLng = new google.maps.LatLng(40.987469, 29.027119);

      let mapOptions = {
        center: latLng,
        zoom: 15,
        mapTypeId: google.maps.MapTypeId.ROADMAP
      }
      this.map = new google.maps.Map(this.mapElement.nativeElement, mapOptions);
    }).catch((error) => {
        console.log('Error getting location', error);

    });

我正在尝试检查用户的位置是否可用。当用户的gps打开时,上面的代码可以正常工作。但我需要检查GPS是否未打开,当我无法获得用户的位置时,我将自己设置位置。我该如何检查用户位置是否可用?我正在使用离子原生地理定位。提前致谢。

3 个答案:

答案 0 :(得分:1)

您可以使用Diagnostic cordova plugin.

Diagnostic.isLocationEnabled().then( (avail) => {
  console.log(avail);
  if(!avail){
    return Diagnostic.switchToLocationSettings();
  }
}).catch( (err) => {
  console.log(err);
}).then( () => {
  console.log('entered');
  return this.getLocation().then(()=>{ //get location } )

  })

答案 1 :(得分:1)

您可以使用此代码获取当前位置。我遇到了同样的问题。已使用此代码解决:

    if (navigator.geolocation) {
        var options = {
            timeout: 10000,
            enableHighAccuracy: false
        };

        navigator.geolocation.getCurrentPosition(position=> {
            console.info('Position : ' + JSON.stringify(position));

        }, error => {
            console.log(' Error : ' + JSON.stringify(error));
        }, options);
    } else {
         // you can set your custom position here if not location found.
    }

答案 2 :(得分:0)

您需要将options传递给Geolocation.getCurrentPosition()以获得投掷catch

试试这个

let optionsGPS = {timeout: 4000, enableHighAccuracy: true};
Geolocation.getCurrentPosition(optionsGPS).then((result) => {
  this.loadMap(result.coords.latitude, result.coords.longitude);
}).catch((err) => {
    let alert = this.alertCtrl.create({
        title: 'Error on GPS',
        subTitle: err,
        buttons: 'OK'
    });
    alert.present();
});

我遇到了同样的问题,这对我有用