无论出于什么原因,下面的请求都没有从google得到响应。但是,如果我将URL粘贴到地址栏中,它就可以正常工作。我不确定为什么会发生这种情况。google是否通过referrer headers过滤掉请求?
http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=3122%2C%20Australia
$.ajax({
url:'http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address='+post_code+encodeURIComponent(', Australia'),
success:function(data) {
alert(data);
if(data['status'] == 'OK') {
var location = data['results'][0]['geometry']['location'];
map.panTo(location['lat']+':'+location['lng']);
map.setZoom(8);
}
}
});发布于 2010-09-30 08:03:37
看起来你可能被Same Origin Policy阻止了。
当Google Maps为JavaScript提供了全功能的Client-side Geocoding API时,您正在尝试使用JavaScript。还有一个v2 version,但最近被弃用了。
这将自动解决同源问题,此外,请求限制将按客户端IP地址计算,而不是按服务器IP地址计算,这对于流行的站点来说会有很大的不同。
客户端服务应该非常容易使用。下面是一个使用v3接口的非常简单的地理编码示例:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps Geocoding Demo</title>
<script src="http://maps.google.com/maps/api/js?sensor=false"
type="text/javascript"></script>
</head>
<body>
<script type="text/javascript">
var geocoder = new google.maps.Geocoder();
if (geocoder) {
geocoder.geocode({ 'address': 'Australia' }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
console.log(results[0].geometry.location);
}
else {
console.log('No results found: ' + status);
}
});
}
</script>
</body>
</html>上面的命令应该会将(-25.274398, 133.775136)打印到控制台。
https://stackoverflow.com/questions/3826756
复制相似问题