2

到处找——并且已经阅读了许多关于谷歌 API(地图、地理编码、地点、自动完成等)的其他问题——但没有任何效果。

我有一个启用了 Places、Static Maps 和 Maps v3 & v2 服务的 API 密钥。

我正在尝试执行反向地理编码(通过 JSON 从纬度/经度坐标获取街道地址信息)。

这是我在 JavaScript 中传递的 URL(API 密钥的最后 5 位数字替换为 #####:

http://maps.googleapis.com/maps/api/geocode/json?latlng=49.8925136,-97.1466635&sensor=true&key=AIzaSyDbfv8bFidX1hSbXwwKTTxWQYgU7g####

JSON 响应是:

{
    "results" : [],
    "status" : "REQUEST_DENIED"
}

如您所见,传递了一个“sensor=true”参数 - 根据支持此 API 的 Google 文档,这是问题所在,但这里显然不是这种情况。

我也试过简单地通过

http://maps.googleapis.com/maps/api/geocode/json?latlng=49.8925136,-97.1466635&sensor=true

当 URL 输入到浏览器的地址栏中时,它会返回预期的 JSON 响应——但是当添加到我的 HTML 文件中的 JavaScript 时,我再次收到:

{
    "results" : [],
    "status" : "REQUEST_DENIED"
}

欢迎任何帮助,非常感谢。

4

2 回答 2

2

Google 并不特别希望您在网页中使用此静态 API。您应该在网页中使用 Maps API 及其相关的地理编码功能(因为无论如何您都需要在地图上显示结果)。这些静态 API 旨在用于服务器端,因此看起来它们现在拒绝带有HTTP_REFERER标头的请求。

(使用服务器端的密钥可以让您跟踪统计信息,但无效的密钥将始终导致REQUEST_DENIED是否存在引用者标头。)

于 2012-06-27T18:36:53.043 回答
1

我一直在为同样的问题而苦苦挣扎,我相信我想出了一个非常实用的解决方案,实际上对我来说效果很好!您只需对请求查询的 URI 进行一些小修改。而不是查询

http://maps.googleapis.com/maps/api/geocode/json?latlng=49.8925136,-97.1466635&sensor=true

您实际上应该使用以下 URI 查询 google maps api:

http://maps.google.com/maps/api/geocode/json?latlng=49.8925136,-97.1466635&sensor=true

那个小小的修改对我来说就像一个魅力!

希望这可以帮助。

于 2012-07-08T15:37:02.140 回答