2017-02-11 12 views
2

Я действительно не понимаю, как я должен сделать эту работу:Как использовать CORS для реализации JavaScript Google Адресов запрос API

var requestURL = 'https://maps.googleapis.com/maps/api/place/details/json?placeid=ChIJN1t_tDeuEmsRUsoyG83frY4&key=AIzaSyAW4CQp3KxwYkrHFZERfcGSl--rFce4tNw'; 

console.log(requestURL); 

$.getJSON(requestURL, function(data) { 
    // data 
    console.log(data); 
}); 

и мой HTML-файл:

<body> 

     <script 
    src="https://code.jquery.com/jquery-2.2.4.min.js" 
    integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" 
    crossorigin="anonymous"></script> 
     <script src="main.js" charset="utf-8"></script> 
    </body> 

Я всегда получить Нет заголовка «Access-Control-Allow-Origin» на запрошенном ресурсе. сообщение ... хотя если я перейду к https://maps.googleapis.com/maps/api/place/details/json?placeid=ChIJN1t_tDeuEmsRUsoyG83frY4&key=AIzaSyAW4CQp3KxwYkrHFZERfcGSl--rFce4tNw в мой браузере, чтобы получить правильный JSON.

Я убежден, что CORS может помочь мне здесь. Я не понимаю КОРС. Пожалуйста, может ли кто-нибудь помочь мне простым языком? Что я должен изменить, чтобы сделать эту работу?

Благодаря

+0

Первое, что нужно сделать, это посмотреть, если Google Места поддержки CORS. Если нет, нет смысла. Я предполагаю, что они поддерживают JSONP, но проверяют документацию. –

+0

Он делает, но я слишком глуп, чтобы понять его. Https://developers.google.com/api-client-library/javascript/features/cors –

+0

Я не уверен, почему это было отмечено как дубликат. Это явно не так. –

ответ

4

Вы пытаетесь использовать Google Places API веб-сервиса на стороне клиента, в то время как он предназначен для серверных приложений. Вероятно, поэтому подходящие заголовки ответов CORS не заданы сервером.

Как объяснено в Notes at the beginning of the Place Details documentation, вы должны использовать библиотеку Адресов в API Google Maps JavaScript:

Если вы строите на стороне клиента приложение, посмотрите на Google Places API for Android, то Google Places API for iOS, и Places Library in the Google Maps JavaScript API.

Примечание: вам нужно будет активировать JavaScript API Карт Google в вашем Google Developer Console первым.

Вот способ, которым Вы можете продолжить, чтобы получить информацию о месте (на основе example from the documentation):

<head> 
    <script type="text/javascript"> 
     function logPlaceDetails() { 
      var service = new google.maps.places.PlacesService(document.getElementById('map')); 
      service.getDetails({ 
      placeId: 'ChIJN1t_tDeuEmsRUsoyG83frY4' 
      }, function (place, status) { 
      console.log('Place details:', place); 
      }); 
     } 
    </script> 
    <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAW4CQp3KxwYkrHFZERfcGSl--rFce4tNw&libraries=places&callback=logPlaceDetails"></script> 
</head> 
<body> 
    <div id="map"></div> 
</body> 

Google Place details output to the console

+0

Это кажется хорошим, но несколько вещей: 1) Вы используете ES6 (я еще не понимаю ES6), 2) он не работает для меня, 3) Я не хочу карты, я просто хочу вернуть объект этого места поэтому я могу выводить данные в любом случае, я выбираю. Спасибо за вашу помощь –

+0

1) Я только что заменил 'const' на' var' и '(place, status) =>' by 'function (place, status)', поэтому больше нет ES6, 2) Можете ли вы уточнить? У вас есть ошибка в консоли? 3) Я не эксперт Google Maps, но, похоже, вы можете предоставить узел «Dom» вместо экземпляра карты в «PlacesService», поэтому никакая карта не отображается. Я протестировал и обновил код соответственно – rd3n

+0

Я, наконец, получил это, чтобы работать, модифицируя пример в документации Google. Спасибо, ваш ответ указал мне в правильном направлении. –

 Смежные вопросы

  • Нет связанных вопросов^_^