他のすべてが前にロードされることを保証するために、どこに Tracker.autorun を配置するのか疑問に思っています。と思いました
Meteor.startup(function(){...});
はこのような状況で使用されますが、mdg:geolocation から Geolocation オブジェクトを参照すると、まだ定義されていないことがわかります。
キャッチされていない TypeError: null のプロパティ 'lng' を読み取れません
私は次の回避策を使用しますが、より洗練された解決策があることを願っています。
Meteor.startup(function () {
trackerGeolocationInit = setInterval(enableLocationTracking, 100);
});
enableLocationTracking = function(){
var location = Geolocation.latLng();
if(location === null)
return;
else
clearInterval(trackerGeolocationInit);
Tracker.autorun(function () {
var location = Geolocation.latLng();
Meteor.users.update(Meteor.userId(), {
$set: {
"profile.location": {
type: 'Point',
coordinates: [location.lng, location.lat]
}
}
});
});
}