下面是一段利用谷歌地图 API 获取点点之间距离的代码,采用 V3 版本中的 DirectionsService()
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
- 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 循环一个一个按序获得距离的期望失败了。但是如果在其中加入调试,一步一步控制其循环求解的过程,却能得出有序距离数组。不得其解啊!
来源: