Как я могу получить JSON из API Google Directions, используя jQuery?

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>jQuery.getJSON demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>

<script>
APIKEY = "AIzaSyC1CCvx0HI78PGLWpO-R67s8r7A0zckEyc";
requestURL = "https://maps.googleapis.com/maps/api/directions/json?origin=Brooklyn&destination=Queens&mode=transit&key=" + APIKEY + "callback=?";

$.ajax({
            url: requestURL, 
            type: "GET",   
            dataType: 'jsonp',
            cache: false,
            success: function(response){                          
                alert(response);                   
            }           
        }); 
</script>

</body>
</html>

Прямо сейчас это возвращает ошибку:

https://maps.googleapis.com/maps/api/directions/json?origin=Brooklyn&destin…=Queens&mode=driving&key=[APIKEYHERE]&callback=?
maps.googleapis.com/maps/api/directions/json?origin=Brooklyn&destination=Qu…l7pA&callback=jQuery1102013888467964716256_1429822392524&_=1429822392525:2 Uncaught SyntaxError: Unexpected token :

Я не могу понять, как заставить это работать. Ключ API в настоящее время является ключом API браузера.

3 ответа

Вы не можете использовать AJAX для доступа к API карт Google. Он выдаст вам неизвестный ответ об ошибке, но в действительности это "отказ в доступе" из-за CORS. Приведенный ниже код даст вам действительные данные для маршрута между Бруклином и Куинсом, вождение, в метриках

<script src="http://maps.google.com/maps/api/js?sensor=true"></script>
        var directionsService = new google.maps.DirectionsService();
        var directionsRequest = {
            origin: "brooklyn",
            destination: "queens",
            travelMode: google.maps.DirectionsTravelMode.DRIVING,
            unitSystem: google.maps.UnitSystem.METRIC
        };
        directionsService.route(directionsRequest, function (response, status) {
            if (status == google.maps.DirectionsStatus.OK) {                    
            //do work with response data
            }
            else
                //Error has occured
        })

ссылка: http://www.sitepoint.com/find-a-route-using-the-geolocation-and-the-google-maps-api/

Вы делаете это правильно! Я получил ту же ошибку. Единственное, что вам нужно изменить - это тип данных с jsonp на json, потому что API Google возвращает его в формате json, а не в jsonp. Вот почему вы получаете эту ошибку.

Направление-веб-сервис не поддерживает JSONP(или CORS) .

Если вы хотите запросить услугу на стороне клиента, вы должны загрузить maps-Javascript-API и использовать API-методы, для получения дополнительной информации см. https://developers.google.com/maps/documentation/javascript/directions.

Другие вопросы по тегам