8

Google 提供了一个很棒的 REST 接口,用于对地址进行地理编码和反向地理编码。我的 API 密钥是有效的,如果我将请求直接输入到浏览器地址中,效果会很好。但是,下面的 jquery 失败了,我不明白为什么。希望你能在这里帮助我。

$.getJSON("http://maps.google.com/maps/geo?q="+ address+"&key="+apiKey+"&sensor=false&output=json",
  function(data, textStatus){
     console.log(data);
  });

此服务的 Google REST 接口文档:http ://code.google.com/apis/maps/documentation/geocoding/index.html

4

4 回答 4

17

这里的问题是我没有指定 JSONP 回调。正确的代码如下

$.getJSON("http://maps.google.com/maps/geo?q="+ address+"&key="+apiKey+"&sensor=false&output=json&callback=?",
  function(data, textStatus){
     console.log(data);
  });
于 2009-05-22T15:04:12.427 回答
3

由于安全限制,您不能从不同域中的页面向 URL 发送 AJAX 请求。这就是为什么如果您在浏览器中输入 URL,它会起作用,但如果您尝试从您的 javascript 代码发出请求,则不会。

一种常见的解决方法是使用充当代理的服务器端组件:它接收您的 AJAX 请求并将它们发送到谷歌地理定位器。

于 2009-05-22T14:43:53.373 回答
0

添加误差函数

            error: function(xhr, ajaxOptions, thrownError) {
            alert("Ajax Error: " + xhr.status + "\nMsg: " + xhr.responseText);
        }

并尝试调试它是否只是一个与 json 相关的错误

于 2009-05-22T14:48:21.383 回答
0

我遇到了完全相同的麻烦。这就是我最终能够让它为我工作的方式。

请参阅谷歌地图 api 文档

于 2011-12-16T03:41:52.903 回答