我的Meteor Geolocation功能错误了

时间:2015-07-24 10:47:09

标签: javascript meteor geolocation

我无法保存坐标的lat和lng。我在网络浏览器上测试,所以坐标应该可用。

  1. 我在网络浏览器上进行测试,尝试过其他网站,没有任何问题可以解决我的职位问题
  2. lat和lng显示在{{loc.lat}}{{loc.lng}}
  3. 的html上
  4. 当我输入console.log(Geolocation.latLng());时,它会返回正确的当前lat和lng:Object {lat: xxx, lng: xxx};,然后是第二行,显示undefined但不可点击。
  5. 在提交邮件时,错误会显示在命令提示符Exception while invoking method 'postInsert' MongoError: insertDocument :: caused by :: 16755 Can't extract geo keys from object, malformed geometry?上,字段显示为loc: { type: "Point", coordinates: [ null, null ] }。我已检查订单是否正确。
  6. 偶尔会返回此错误:Uncaught TypeError: Cannot read property 'lat' of null我无法跟踪,因为没有提到有问题的行。这可能意味着loc为空?
  7. 有人可以帮我这个吗?提前谢谢你:)


    以下是我的地理位置线

    在客户端的submit.js中

        Template.postSubmit.onCreated(function() {
          this.interval = Meteor.setInterval(function (){
            var location = Geolocation.latLng();
            if(location) {
              Session.set('location', location);
            };
          }, 2000);    
          Session.set('postSubmitErrors', {});
        });
    
        Template.postSubmit.helpers({
          'loc': function () {
              return Session.get('location');
          }
        });
    

2 个答案:

答案 0 :(得分:4)

Geolocation.latLng()触发刷新该位置,但它是异步的,因此它可能在开始时返回undefined,然后稍后返回坐标。 由于mdg:geolocation包中没有异步回调,我使用跟踪器“等待”Geolocation.latLng()的结果:

var userGeoLocation = new ReactiveVar(null);

Tracker.autorun(function (computation) {
  userGeoLocation.set(Geolocation.latLng());
  if (userGeoLocation.get()) {
    //stop the tracker if we got something
    computation.stop();
  }
});

答案 1 :(得分:-2)

我找到了解决方案。 问题在于模板中loc的结构。

coordinates: [loc.lat, loc.lng] 应该 coordinates: [loc.lng, loc.lat],根据Mongo的文档。