使用AngularJS工厂使用$ resource连接到google distance api

时间:2014-03-12 16:15:07

标签: angularjs api distance ngresource

我想使用$ resource创建一个工厂,以便从谷歌的距离api(https://developers.google.com/maps/documentation/distancematrix/)中检索距离信息。

我已经剥离了参数,试图让简单的服务工作..

这是我目前的代码:

VenuesAppServices.factory('VenueDistance', ['$resource',
function($resource){
    return $resource('http://maps.googleapis.com/maps/api/distancematrix/json', {}, {
        Distance: {method:'GET'}
    });
}]);

并称之为:

VenueDistance.Distance(function(results){
    alert(JSON.stringify(results));
},function(error){
    alert(JSON.stringify(error));
});

我希望能够返回以下内容:

{
"destination_addresses" : [],
"error_message" : "The 'sensor' parameter specified in the request must be set to either 'true' or 'false'.",
"origin_addresses" : [],
"rows" : [],
"status" : "REQUEST_DENIED"
}

但是我得到了404响应。

{"data":"","status":404,"config":{"transformRequest":[null],"transformResponse":[null],"method":"GET","url":"http://maps.googleapis.com/maps/api/distancematrix/json","headers":{"Accept":"application/json, text/plain, */*"}}}

如果您将google api替换为(http://api.geonames.org/postalCodeLookupJSON)之类的。然后,您将从该站点获得预期响应。

任何人都可以告诉我为什么谷歌网址没有返回您从浏览器获得的结果?

2 个答案:

答案 0 :(得分:1)

我认为您不会发送原点和目的地等参数。

您需要通过$ resource或$ http服务发送URL:

VenuesAppServices.factory('VenueDistance', ['$resource',function($resource){
return $resource('http://google.com/maps/api/distancematrix/json?origins=Bobcaygeon+ON|41.43206,-81.38992&destinations=Darling+Harbour+NSW+Australia|24+Sussex+Drive+Ottawa+ON|Capitola+CA', {}, { Distance: {method:'GET'}});}]);

VenuesAppServices.factory('VenueDistance', ['$resource',function($resource){
return $resource('http://google.com/maps/api/distancematrix/json?origins='+ origin +'&destinations='+ destination, {}, { Distance: {method:'GET'}});}]);

Google Maps API Documentation

答案 1 :(得分:0)

可能是您收到跨域javascript http请求错误并将其字符串化