Geolocation.currentLocation()不起作用,使用meteor(1.5.1)& MDG:地理位置(1.3.0)

时间:2017-08-02 09:50:03

标签: google-maps meteor geolocation currentlocation

我正在使用流星项目(1.5.1)并使用mdg:geolocation@1.3.0,我正在尝试获取Geolocation.currentLocation()的值,但它给了我null值,行为是一直都不一样,有时它会给我零值,有时给我正确的价值。

我已经研究了很长时间,但还没有得到解决方案,如果可能的话请提供meteor@1.5.1的解决方案并使用mdg:geolocation包。

提前致谢...

1 个答案:

答案 0 :(得分:0)

MDG已实施mdg:geolocation用于连续地理定位,此Meteor包中的函数返回活动变量。您可以这样使用包(例如):

// Continous geolocation with mdg:geolocation
// This code will run every time user location changes.

Tracker.autorun(() => {
  const position = Geolocation.currentLocation();

  Tracker.nonreactive(() => {
    if (position) {
      Meteor.call('user.update.position', position);
    }
  });
});

如果您不需要连续的地理定位,您可以使用javascript方法而不是meteor包。有关windows.navigator.geolocation的其他选项,请参阅this answer。在这种情况下,您可能需要添加cordova-plugin-geolocation,以防您构建Android或iOS应用

// Navigation geolocation to get geolocation only once
let errorCallback;
let successCallback;

successCallback = position => Meteor.call('user.update.position', position);
errorCallback = err => console.log(err);

navigator.geolocation.getCurrentPosition(successCallback, errorCallback, {
  maximumAge: 60000,
  timeout: 20000
});