<!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密钥。
答案 0 :(得分:3)
您不能使用ajax访问googles maps api。它会给你一个未知的错误响应,但实际上它由于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/
答案 1 :(得分:1)
directions-webservice不支持JSONP(或CORS)。
如果要在客户端请求服务,则必须加载maps-Javascript-API并使用API方法,有关详细信息,请参阅https://developers.google.com/maps/documentation/javascript/directions。
答案 2 :(得分:1)
你正在以正确的方式做到这一点!我得到了同样的错误。你唯一需要改变的是从jsonp到json的数据类型,因为google api在json而不是jsonp中返回它。这就是你得到这个错误的原因。