我正在尝试对Google Maps Geocoding webservice$.getJSON
进行 jQuery调用,但由于跨域安全问题,这不起作用。
我一直无法在网上弄清楚,但我已经阅读了一些关于 Google Javascript API 或 JSONP 的信息,但到目前为止还没有明确的答案......
谁能启发我?
谢谢!
我正在尝试对Google Maps Geocoding webservice$.getJSON
进行 jQuery调用,但由于跨域安全问题,这不起作用。
我一直无法在网上弄清楚,但我已经阅读了一些关于 Google Javascript API 或 JSONP 的信息,但到目前为止还没有明确的答案......
谁能启发我?
谢谢!
当 Google 地图为 JavaScript提供全功能的客户端地理编码 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 请求使用相对路径,而 HTTP 服务器将充当任何“远程”位置的代理。
在 mod_proxy 中设置反向代理的基本配置指令是 ProxyPass。您通常会按如下方式使用它:
ProxyPass /geocode/ http://maps.google.com/maps/api/geocode/
在这种情况下,浏览器可以向 发出请求,/geocode/output?parameters
但服务器将通过充当http://maps.google.com/maps/api/geocode/output?parameters
.