如何使用 google 地图中的函数返回距离
how to returning distance with function in google maps
我有这个 link here 的脚本,我想让函数返回距离,这是我的实际脚本:
var calcRoute = function(origin,destination) {
var dist;
var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
directionsDisplay = new google.maps.DirectionsRenderer();
var request = {
origin:origin,
destination:destination,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
dist = response.routes[0].legs[0].distance.value / 1000;
}
});
return dist;
};
$scope.resto = calcRoute("-7.048357, 110.418877","-7.048443, 110.441022");
我在函数中放入了两个参数,我希望函数返回距离,但是
return dist;
在脚本中没有从
返回值
dist = response.routes[0].legs[0].distance.value / 1000
我正在使用 angularjs 和 resto 在我的视图中没有显示距离,请任何人帮助我,脚本或其他问题有问题吗?
在执行directionsService.route
函数之前,函数calcRoute
已经执行并返回dist
,这将是未定义的。
你会得到directionsService.route
的回调函数里面的值
您可以向 calcRoute
函数添加另一个参数(回调函数)。现在,一旦 directionsService.route
获得响应,您就可以将值传递给这个新的回调函数。
试试这个。
var calcRoute = function(origin,destination,cb) {
var dist;
var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
directionsDisplay = new google.maps.DirectionsRenderer();
var request = {
origin:origin,
destination:destination,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
cb(null, response.routes[0].legs[0].distance.value / 1000);
}
else {
cb('pass error information');
}
});
};
calcRoute("-7.048357, 110.418877","-7.048443, 110.441022", function (err, dist) {
if (!err) {
$scope.resto = dist;
}
});
我有这个 link here 的脚本,我想让函数返回距离,这是我的实际脚本:
var calcRoute = function(origin,destination) {
var dist;
var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
directionsDisplay = new google.maps.DirectionsRenderer();
var request = {
origin:origin,
destination:destination,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
dist = response.routes[0].legs[0].distance.value / 1000;
}
});
return dist;
};
$scope.resto = calcRoute("-7.048357, 110.418877","-7.048443, 110.441022");
我在函数中放入了两个参数,我希望函数返回距离,但是
return dist;
在脚本中没有从
返回值dist = response.routes[0].legs[0].distance.value / 1000
我正在使用 angularjs 和 resto 在我的视图中没有显示距离,请任何人帮助我,脚本或其他问题有问题吗?
在执行directionsService.route
函数之前,函数calcRoute
已经执行并返回dist
,这将是未定义的。
你会得到directionsService.route
您可以向 calcRoute
函数添加另一个参数(回调函数)。现在,一旦 directionsService.route
获得响应,您就可以将值传递给这个新的回调函数。
试试这个。
var calcRoute = function(origin,destination,cb) {
var dist;
var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
directionsDisplay = new google.maps.DirectionsRenderer();
var request = {
origin:origin,
destination:destination,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
cb(null, response.routes[0].legs[0].distance.value / 1000);
}
else {
cb('pass error information');
}
});
};
calcRoute("-7.048357, 110.418877","-7.048443, 110.441022", function (err, dist) {
if (!err) {
$scope.resto = dist;
}
});