使用jquery.getJson和Google的GeoCoding HTTP服务

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

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

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

由于安全限制,您无法从其他域中的页面向URL发送AJAX请求。 这就是为什么它在浏览器中输入URL时有效,但如果你尝试从你的javascript代码中输入请求则不行。

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

添加错误function

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

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

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

请参阅google maps api docs

Interesting Posts