復制代碼 代碼如下:
var request;
var distanceArray = [];
function getdistance() {
distanceArray = [];
var directionsService = new google.maps.DirectionsService();
for (var a = 0; a < pointsArray.length; a++) {
for (var b = 0; b < pointsArray.length; b++) {
if (a != b) {
request = null;
request = {
origin: pointsArray[a],
destination: pointsArray[b],
travelMode: google.maps.DirectionsTravelMode.DRIVING,
unitSystem: google.maps.DirectionsUnitSystem.METRIC
};
directionsService.route(request, function (response, status) {
if (status == google.maps.DirectionsStatus.OK) {
var myRoute = response.routes[0].legs[0].distance.value; //路線長度
distanceArray.push(myRoute);
}
});
}
}
}
}
有一個問題想與大家交流一下,利用谷歌地圖API獲取批量的點點之間的距離時,如何保證自己得到的距離信息是有序的?
比如:有pointsArray[]中有a,b,c三個點的數據,我怎麼才能按序得到[a,b],[a,c],[b,a],[b,c],[c,a],[c,b]的距離信息。
在上面的代碼中,所有a!=b的距離都是一次性傳給directionsService.route進行求解的,也就是說,外圍的FOR循環控制對其沒有用。所以想依靠FOR循環一個一個按序獲得距離的期望失敗了。但是如果在其中加入調試,一步一步控制其循環求解的過程,卻能得出有序距離數組。不得其解啊!