如何使用jQuery从google方向api获取JSON?

时间:2015-04-23 20:57:39

标签: google-maps google-maps-api-3 directions

<!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 个答案:

答案 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中返回它。这就是你得到这个错误的原因。