我想创建一个非常简单的iphone应用程序,每分钟读取设备的地理位置并将其插入Mongo集合中。我已经遇到this meteor geolocation background package,但我不明白它是如何工作的。
问题:
GeolocationBG.config
会是什么样子? 非常感谢您的帮助
答案 0 :(得分:1)
试试这个。
首先你应该配置它。
if (Meteor.isCordova) {
GeolocationBG.config({
url: 'https://localhost:3000/api/geolocation',
debug: false //or true if you want to see logs
});
//here we are starting the service each 1 minute
Meteor.setTimeout(function(){
GeolocationBG.start();
Session.set('geoStart',true); //Trigger a Session when the service start
}, 60000);
//This is how we stop the service.
Tracker.autorun(function(){
if (Session.get('geoStart')){
GeolocationBG.stop();
Session.set('geoStart',false);
}
})
}
这里有每分钟读取设备的地理位置行为。
现在并将其插入Mongo集合步骤。
首先创建一个集合。
//Global collection put it on a lib folder or a very top if(Meteor.isServer/Client)
GeoLog = new Mongo.Collection('GeoLog');
现在在server
执行以下操作(如果删除自动发布包)。
Meteor.publish('geoData',function(){
return GeoLog.find();
})
现在在客户端(插入部分和订阅)
//You can place the subscript into the lib folder inside a if(Meteor.isClient);
//or inside a Meteor.startup.
Meteor.startup(function(){
Meteor.subscribe('geoData')
})
//Did you remember the Meteor.setTimeout? on the if(Meteor.isCordova)?, lets update it.
Meteor.setTimeout(function(){
GeolocationBG.start();
GeolocationFG.get(function(location) {
GeoLog.insert({
location: location,
uuid: GeolocationBG.uuid(),
device: GeolocationBG.device(),
//userId: Meteor.userId(), optional
created: new Date()
});
});
Session.set('geoStart',true); //Trigger a Session when the service start
}, 60000);
您可以在事件处理程序中使用GeolocationFG.get(function(location) {});
,例如button
。
注意:这只是一个想法,我只使用if(Meteor.isCordova)
因为您说非常简单的iPhone应用。