Как я могу получить 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.