我在地图上有一个起点坐标。我有多个(100)端点来计算从起点到终点的总距离。 起点是我的办公室,终点是我客户的位置。我想计算总距离。
我在javascript上使用for循环
for (var i = 0; i < destinations.length; i++) {
var request = {
origin: "60.758447, 69.385923",
destination: destinations[i],
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function (response, status) {
if (status == google.maps.DirectionsStatus.OK) {
var directionsDisplay = new google.maps.DirectionsRenderer();
directionsDisplay.setMap(map);
directionsDisplay.setDirections(response);
totalKM = totalKM + (response.routes[0].legs[0].distance.value / 1000);
distanceInput.value = totalKM;
console.log(totalKM)
}
});
};
但是这个循环只能工作10个目的地。我可以在控制台日志中看到这一点。谷歌会限制查询限制吗?
答案 0 :(得分:0)
在其中一篇评论中,提到了距离矩阵API。我建议这样做,因为你只有一个来源和多个目的地。使用路线API,您只能拥有一个原点和目的地对,但使用距离矩阵API,您可以拥有多个目的地和原点。距离矩阵API还允许每个请求100个元素(number_of_elements = number_of_origins * number_of_destinations)。这将允许您在一个请求中拥有一个源和100个目标。请参阅此处的使用限制:
https://developers.google.com/maps/documentation/distance-matrix/usage-limits
当您从API获得响应时,您可以通过以下方式获取每个元素的距离:
for(i = 0; i < response.rows[0].elements.length; i++){
totalDistance += response.rows[0].elements[i].distance.value;
}
它是行数组中的元素0,因为你只有一个原点,如果你有多个原点,你需要循环遍历多行。
我还修改了文档中的一个Google Distance Matrix API示例,以总结3个目的地与一个来源的距离,以及演示如何工作。唯一的区别是在你的应用程序中你会有更多的目的地,但逻辑应该是相同的。请注意,为了安全起见,我从我的小提琴中取出了我的API密钥,请输入您自己的样本以便工作:
https://jsfiddle.net/o0wyq4bo/1/
我希望这有帮助!