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
答案 0 :(得分:18)
这里的问题是我没有指定JSONP回调。正确的代码如下
$.getJSON("http://maps.google.com/maps/geo?q="+ address+"&key="+apiKey+"&sensor=false&output=json&callback=?",
function(data, textStatus){
console.log(data);
});
答案 1 :(得分:3)
由于安全限制,您无法从其他域中的网页向网址发送AJAX请求。这就是为什么它在浏览器中输入URL时有效,但如果你尝试从你的javascript代码中输入请求则不行。
常见的解决方法是使用server side component acting as a proxy:它会收到您的AJAX请求并将其发送到Google地理定位器。
答案 2 :(得分:0)
添加错误功能
error: function(xhr, ajaxOptions, thrownError) {
alert("Ajax Error: " + xhr.status + "\nMsg: " + xhr.responseText);
}
并尝试调试它是否只是一个与json相关的错误
答案 3 :(得分:0)
我遇到了同样的麻烦。这就是我最终能够让它为我工作的方式。