Как выполнить междоменные вызовы Ajax к Google Maps API?

Я пытаюсь сделать jQuery $.getJSON звоните в Google Maps, Геокодирующую веб-сервис, но это не работает из-за междоменных проблем безопасности.

Я не смог понять это онлайн, но я читал немного о Google Javascript API или JSONP, но до сих пор никаком четком ответе...

Мог кто-либо enlight меня?

Спасибо!

43
задан Daniel Vassallo 4 August 2010 в 21:34
поделиться

1 ответ

Я не вижу никаких преимуществ в использовании Веб-службы геокодирования на стороне сервера, когда Google Maps предоставляет полнофункциональный API геокодирования на стороне клиента для JavaScript.

Прежде всего, это автоматически решит вашу проблему same-origin, и, кроме того, лимиты запросов будут рассчитываться на 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>

Если по какой-то причине вы все еще хотите использовать веб-сервис на стороне сервера, вы можете установить очень простой обратный прокси, возможно, используя mod_proxy, если вы используете Apache. Это позволит вам использовать относительные пути для ваших 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.

87
ответ дан 26 November 2019 в 22:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: