可以使用 Node.js 通过 Google API 在地图上进行真正的实时更新
Posted
技术标签:
【中文标题】可以使用 Node.js 通过 Google API 在地图上进行真正的实时更新【英文标题】:Is possible to have really real time updates on map via Google API using Node.js 【发布时间】:2013-01-27 00:35:08 【问题描述】:是否有可能使用 Node.js 通过 Google Maps API 在地图上进行真正的实时更新,或者 Google 是否有一些回调限制,例如5 秒。还是 30 秒等?
因为几乎实时的东西是 node.js 的真正力量,例如流星延迟补偿等。
但我很好奇这是否可能,谷歌让我这样做。如果不允许使用“真正的”实时更新,那么最大值是多少。 Web 应用程序中允许 Google 地图的回调时间?
【问题讨论】:
您的意思是使用实时 gps 源在地图上移动对象时更新它?你为什么要不断地重新加载地图/为此重复查询? 例如我在我的数据库中保存了很多积分,例如不明飞行物目击事件(只是一个例子),如果有人在亚利桑那州尤马发现了那个飞行的吸盘并作为注册用户发布了一个坐标,它应该立即在谷歌地图上可见,如果可能的话,在提交后的一两秒内。 如果我们以这个网站为例:maps.panedia.com 并执行 google maps api 将点击右栏中的图像视为请求(因为它正在向 gm 发送请求)。但如果是这种情况,50-100 个用户可以完成 1 天 2500 个请求的限制,这不是很好。商业谷歌地图的费用是多少?每月 100 美元或更多? 单击图像不算作请求,因为不会发生物理地址和坐标之间的转换,它只是将坐标扔到地图上——这与您所想的很接近想要。 【参考方案1】:听起来,您并不真的需要 Geolocation API,您只需使用 javascript Maps API 就可以了。地理位置 API 有助于在地址和坐标之间进行转换。如果您的用户正在插入新的目击但不知道坐标,或者如果您有坐标但需要有关区域名称的帮助,它会有所帮助。如果您确实使用它,您只需请求一次,因此限制为 2500 次,您每天可以进行 2500 次目击。如果这让您陷入困境,您还可以查看没有限制的 OpenStreetMap。
您可以使用地图、谷歌地图、OpenStreetMap 等,基本上可以根据您的要求动态移动/更新地图上的这些项目。
您可以将您的 UFO 位置存储在一个集合中。更新地图的方法是使用Meteor.autorun。只要将新文档添加/更新/编辑到您的集合中,它就可以实时更新所有客户端地图。
Meteor.autorun(function()
var ufos = UFOs.find().fetch();
ufos.forEach(function(ufo)
//draw the ufo onto your map or edit the existing one already on.
);
);
当您的 UFO 集合更新时,将调用此函数,您可以让它使用新内容更新地图/编辑现有内容。
【讨论】:
【参考方案2】:使用 Google 地理编码 API 的查询限制为每天 2,500 个地理定位请求。 (Google Maps API for Business 的用户每天最多可以执行 100,000 个请求。)强制执行此限制是为了防止滥用和/或重新利用 Geocoding API,并且此限制将来可能会更改,恕不另行通知。此外,我们强制执行请求速率限制以防止滥用服务。如果您超过 24 小时限制或以其他方式滥用服务,Geocoding API 可能会暂时停止为您工作。如果您继续超过此限制,您对 Geocoding API 的访问可能会被阻止。
https://developers.google.com/maps/documentation/geocoding/
此上下文中的请求是对地理定位 API 的单个 http 请求,例如
http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true_or_false
【讨论】:
谢谢,但是“请求”到底是什么意思?我猜想在地图上缩放和移动不算是请求还是? 现在我不能肯定地说,但似乎每次都会发出“请求”并发出 HTTP 请求。因此,每次您的服务器/页面向 google 的服务器发出请求时。很可能(我没有明确检查过)在地图上缩放/移动是 javscript 的产物,而不是单独的请求。以上是关于可以使用 Node.js 通过 Google API 在地图上进行真正的实时更新的主要内容,如果未能解决你的问题,请参考以下文章
是否可以使用 node.js 发送 Google Hangouts 聊天消息?