我有一个使用d'burles的流星应用程序:google-maps'和'mdg:geolocation'。我有一个集合中的地方列表,我正在做一个geospacial查询来查找我附近的地方,我必须在服务器上运行它,因为mini-mongo还不支持它。
我正在发布并且能够来回发送参数以缩小我对地点的搜索范围,但由于地理位置需要一秒钟来获取用户的位置,我不能立即订阅,否则位置为空并且查询将不知道该怎么做。
我认为我的问题出在我订阅的地方,
Meteor.subscribe('nearest', myLng, myLat, radius);
这是我的代码:
Template.map.onCreated(function() {
//****If i subscribe here, i get back results (if i use fixed location, geolocation won't have given me results yet)
GoogleMaps.load();
var self = this;
Meteor.subscribe('nearest', myLng, myLat, );
GoogleMaps.ready('map', function(map) {
//****If i subscribe here, it collection count will be 0
//I need to subscribe HERE since this is when my geolocation will be provided
var marker;
console.log(Mycollection.find().count());
});
});
这是我的发布,它在服务器文件夹中运行:
Meteor.publish("nearest", function (lng, lat, dist) {
return Mycollection.find( {loc: { $geoWithin: { $centerSphere: [ [ lng, lat ], dist/3963.2 ] } }} )
});
任何人都知道为什么第二个位置没有正确订阅,或者知道根据用户的位置获得订阅的方式?
我一直在搜索和搜索,没有运气,所以任何帮助将不胜感激!