参考Josh Owens' Cityforks演示,我已经获得了获取当前位置并且我的应用程序没有崩溃但是当我检查Robomongo时,places集合没有填充数据库。
我完全复制了代码:
Places = new Mongo.Collection('places');
Meteor.methods({
'fetchNearbyLocations': function(coords) {
if (Meteor.isServer) {
results = HTTP.get("https://maps.googleapis.com/maps/api/place/nearbysearch/json? location=" + coords.latitude + "," + coords.longitude + "&radius=500&types=food&key=AIzaSyCtfoCAldCEf8hXUlkVUd4UljqKR6W_aF4")
console.log(results)
_(results.data.results).each(function(loc) {
_.extend(loc, {loc: {type: "Point", coordinates: [loc.geometry.location.lng, loc.geometry.location.lat]}})
Places.upsert({id: loc.id}, {$set: loc})
});
}
}
});
关于我当然会改变的API密钥,它是服务器应用程序的密钥(具有IP锁定)还是应该使用的浏览器应用程序密钥(带有引用程序)?
我确实删除了自动发布,不确定这是否有所作为?
另外,是否需要在项目中的某个地方添加类似下面的内容?
<script type="text/javascript" src="http://maps.google.com/maps/api/js? sensor=false"> </script>
非常感谢任何协助。
答案 0 :(得分:0)
关于API密钥
它是浏览器应用的关键。 https://developers.google.com/maps/documentation/javascript/tutorial#api_key
在Robomongo中找到该集合
如果您只是按照Josh的代码,该集合应该出现在Robomongo中。 你在localhost上运行吗? 例如,如果您使用端口3000,则数据库位于端口3001上,您必须将其输入到新的Robomongo连接中。
然后查看您的新连接&gt; Meteor&gt;收藏&gt;你应该看到places
。点击它,您会看到db.places.find
的50个条目(或者您选择在代码中选择返回的许多地方)。
要查看其他情况,只需进入浏览器的控制台(OS X上Chrome中的option+command+j
)并输入Places.find()。fetch(),即可返回50个对象。
或者在终端中,在应用程序的目录中键入meteor mongo
以输入mongo shell,然后键入db.places.find()。pretty()以查看您的集合是否已正确填充。
如果这些工作正常,那么我认为这意味着你并没有正确地看待Robomongo,但你会发现它真的很容易。
添加脚本
对谷歌地图的http调用已经采用fetchNearbyLocations
方法,因此据我所知,这已经足够了。
Google地图不再需要sensor
参数。 source
希望有所帮助!