关于javascript:Google映射json地理编码,浏览器无响应

Google maps json geocoding, no response in browser

无论出于什么原因,下面的请求没有得到谷歌的响应。但是,如果我将URL粘贴到地址栏中,它就可以正常工作。我不知道为什么会这样。谷歌是否通过引用头过滤掉请求?

http://maps.googleapis.com/maps/api/geocode/json?传感器=错误&地址=3122%2c%20澳大利亚

1
2
3
4
5
6
7
8
9
10
11
12
     $.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);
                }
            }

        });

看起来您可能被同一个源站策略阻止。

当google maps为javascript提供功能齐全的客户端地理编码API时,您正试图使用服务器端的地理编码Web服务。还有一个v2版本,但最近已弃用。

这将自动解决相同的源站问题,此外,请求限制将按客户端IP地址计算,而不是按服务器IP地址计算,这会对流行的站点产生巨大的影响。

客户端服务应该很容易使用。下面是一个使用v3 api的非常简单的地理编码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!DOCTYPE html>
<html>
<head>
   <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
   Google Maps Geocoding Demo
   <script src="http://maps.google.com/maps/api/js?sensor=false"
           type="text/javascript">
</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);
            }
         });
      }
   
</body>
</html>

上面应该将(-25.274398, 133.775136)打印到控制台。