离子3:BackgroundLocation更新太罕见了

时间:2017-06-07 12:21:37

标签: ionic-framework ionic2 ionic3

我目前面临一个不太好的问题。我已经创建了一个问题,但没有回应。我需要更改每个位置以更新摄像机中心位置。但这不会发生。刷新不是随着时间的推移而定义的。这对我的需求来说非常罕见。 Android和iOS是一样的。每分钟或类似的事情都会调用日志。 我也尝试了ngZone之外的控制台日志,但它是一样的。 这就是我的配置代码:

let config = {
  desiredAccuracy: 0,
  stationaryRadius: 1,
  distanceFilter: 0,
  debug: true,
  interval: 2000,
  pauseLocationUpdates: false,
  activityType: "AutomotiveNavigation"
};

this.backgroundGeolocation.configure(config).subscribe((location) => {
  // Run update inside of Angular's zone
  this.zone.run(() => {
    if(this.map) {
      this.map.getMyLocation().then( (userLocation: MyLocation) => {
        console.log("INSIDE ZONE Google Maps Location \n LAT: " + userLocation.latLng.lat + "\nLNG: " + userLocation.latLng.lng);
        this.userLocation = userLocation.latLng;
        this.speed = userLocation.speed;
        this.bearing = userLocation.bearing;
        this.altitude = location.altitude;

        this.cameraFollow();
        this.notify(this.nearestReports[0]);
      }).catch( error => {
        alert("Background - NO GPS FOUND: " + error);
      });
    }
  });
});

// Turn ON the background-geolocation system.
this.backgroundGeolocation.start();

1 个答案:

答案 0 :(得分:0)

考虑使用另一个名为Geolocation的Ionic Native插件。

在那里有一个非常方便的watchPosition()功能,看起来就像你在寻找什么。这是一个例子:

let options = {
  enableHighAccuracy: true,
  timeout: Infinity, // don't return response until new ping is available from OS, to save battery
  maximumAge: 0
};

const subscription = this.geolocation.watchPosition(options)
  .filter((p) => p.coords !== undefined) //Filter Out Errors
  .subscribe(position => {
      console.log(position.coords.longitude + ' ' + position.coords.latitude);
});

不要忘记在不需要时停止订阅以节省电池费用:

subscription.unsubscribe();