我正在使用Google地图网络服务执行服务器端(反向)地理编码。
我从Google API控制台获得了一个浏览器端和服务器端的Google API密钥,它允许Google Maps JS API使用更高的请求配额,并实现超额使用付费(成功通过测试) -browser via JS)。但是服务器端密钥似乎不适用于Web服务请求。
例如,此URL工作正常:
http://maps.googleapis.com/maps/api/geocode/json?sensor=true&latlng=43.477329,-80.548601
但是如果你添加一个“key = ...”参数,就像在其他API中一样,我会得到一个REQUEST_DENIED状态。
我做错了什么,或者仅仅是Web服务API(尚未)支持?它将来会得到支持吗?
答案 0 :(得分:1)
不,你没有做错任何事。
不幸的是,对Google Geocoding API实施严格限制,也称为“服务器端地理编码”,是谷歌的设计。如果您的应用每天需要超过2,500个服务器端地理编码,那么您需要升级到他们的Google Maps API for Business产品。
坚持下去,情况变得更糟。
如果您的应用的服务器IP地址与其他应用共享,那么2,500请求每日限制适用于所有应用。这包括与您共享相同服务器IP地址但但不属于您的应用程序!这可能是任何PaaS的常见情况,例如Google App Engine或Heroku。因此,即使您的应用程序今天运行完美,也无法保证它明天仍能正常运行。
在文章"Geocoding Strategies"中,Google表示解决方案是“几乎总是”通过Geocoding Service部分Google Maps JavaScript API V3使用“客户端地理编码”。主要原因是每个用户,每个会话强制执行限制。除非您在客户端上执行地理编码批处理(不是典型的用例),否则这样的请求不应该超出配额限制。
“地理编码策略”文章中的一个金块:设计一个接受用户输入的页面,调用客户端Geocode
服务方法,然后将该信息传递到可以处理它的服务器应用程序,以及希望缓存。这是理想的FAR,但如果无法升级到Google Maps API for Business,则可能是唯一的选择。
答案 1 :(得分:0)
根据这篇文章,您的API密钥应该作为每天超过25,000个负载的请求的三个选项之一。