如何使Google Maps API跨域AJAX调用?

我试图做一个jQuery的$.getJSON调用到谷歌地图地理编码web服务 ,但这是行不通的,因为跨域的安全问题。

我一直没能弄明白,但我已经读了一些关于Google Javascript API或JSONP,但到目前为止还没有明确的答案…

任何人都能照亮我吗?

谢谢!

当Google地图为JavaScript提供全function的客户端地理编码API时,使用服务器端地理编码Web服务时,我看不出优势。

首先,这将自动解决您的同源问题,此外,请求限制将按每个客户端IP地址而不是每个服务器IP地址进行计算,这对于一个受欢迎的站点会产生巨大的影响。

以下是一个使用JavaScript Geocoding API v3的简单示例:

 <script src="http://maps.google.com/maps/api/js?sensor=false"></script> <script type="text/javascript"> var geocoder = new google.maps.Geocoder(); var address = 'London, UK'; if (geocoder) { geocoder.geocode({ 'address': address }, function (results, status) { if (status == google.maps.GeocoderStatus.OK) { console.log(results[0].geometry.location); } else { console.log("Geocoding failed: " + status); } }); } </script> 

如果由于某种原因,您仍然想使用服务器端Web服务,那么您可以设置一个非常简单的反向代理 ,如果您使用的是Apache,则可以使用mod_proxy 。 这将允许您为您的AJAX请求使用相对path,而HTTP服务器将作为任何“远程”位置的代理。

在mod_proxy中设置反向代理的基本configuration指令是ProxyPass。 你通常会使用它如下:

 ProxyPass /geocode/ http://maps.google.com/maps/api/geocode/ 

在这种情况下,浏览器可以向/geocode/output?parameters发出请求,但服务器可以通过作为http://maps.google.com/maps/api/geocode/output?parameters的代理服务器。