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> |
上面应该将