我有一个Angular函数来检索出租车的烦恼,并且我需要计算用户之间的距离以及烦恼的作者之间的距离,然后我就有这样的东西:
在我的HTML中:
<main class="main list_page" ng-controller="taxiRechercheCtrl" ng-init="loadRecherche()">
在Angular中:
myApp.controller("taxiRechercheCtrl", ['$scope','$http','$location', 'TaxiService', 'UserService', function($scope, $http, $location, TaxiService, UserService){
$scope.loadRecherche = function(){
UserService.getPosition().then(function(position){
TaxiService.find($scope.recherche).then(function(response){
$scope.annonces = response.annonces;
for(var i=0;i<$scope.annonces.length;i++){
$scope.annonces[i].Distance = my calculate distance
}
}, function(err){
console.log(err);
});
}, function(err){
console.log(err);
});
};
$scope.calculeDistanceGoogle = function(origin, destination){
var origin1 = new google.maps.LatLng(origin.Latitude, origin.Longitude);
var destination1 = new google.maps.LatLng(destination.latitude, destination.longitude);
var args = {
origins: [origin1],
destinations: [destination1],
travelMode: 'DRIVING'
};
var service = new google.maps.DistanceMatrixService();
service.getDistanceMatrix(args, function(response, status) {
var elt = response.rows[0].elements[0];
$scope.distanceTxt = elt.distance.text;
});
return $scope.distanceTxt;
}
}
在$ scope.annonces [i] .Distance =我的计算距离中,我想要calculeDistanceGoogle函数返回的距离值。
我尝试过:
$scope.calculeDistanceGoogle($scope.annonces[i].Ville, response.position).then(function(response){
console.log(response);
}, function(err){
console.log(err);
});
但是我有一个错误:$ scope.calculeDistanceGoogle(...)。那不是一个函数。
我尝试使用$ scope.distanceTxt变量,我直接尝试:
var myposition = $scope.calculeDistanceGoogle($scope.annonces[i].Ville, response.position);
答案 0 :(得分:0)
$scope.calculeDistanceGoogle(...)
不是返回Promise的函数,因此您不能调用.then(...)
子句。
然后,此代码是错误的:
service.getDistanceMatrix(args, function(response, status) {
var elt = response.rows[0].elements[0];
$scope.distanceTxt = elt.distance.text;
});
return $scope.distanceTxt;
因为服务可能是异步的。
我的建议是返回一个值为distanceTxt
的承诺作为数据(如果承诺中也存在错误,则添加错误)。