如何找到许多标记之一的最佳路线?

时间:2012-07-05 13:18:05

标签: google-maps google-maps-api-3 google-maps-markers shortest-path

在地图上我必须使用标记数组。一个是静态的,我们打电话给station。其他也是静态的,但它们是暂时的,我们称之为fire。单击fire时,必须将最短路径构建为stations之一。我使用TravelMode.DRIVING。我知道我可以计算路线距离,但为了计算我必须先建造路线。是否有任何库可以在一个固定标记和许多其他标记之间找到最佳路径?或者你能帮我讲逻辑吗?我自己可以编写代码。

这是我实现了两个标记之一的最佳路径,并且可以使用循环计算许多标记。但有没有其他方法可以做到这一点?

    directionsService1.route(request1, function (response1, status1) {
        if (status1 == google.maps.DirectionsStatus.OK) {
            var myRoute1 = response1.routes[0].legs[0];
            distance1 = myRoute1.distance.value;
            directionsService2.route(request2, function (response2, status2) {
                if (status2 == google.maps.DirectionsStatus.OK) {
                    var myRoute2 = response2.routes[0].legs[0];
                    distance2 = myRoute2.distance.value;
                    if (distance1 > distance2) {
                        directionsDisplay2.setMap(map);
                        directionsDisplay2.setDirections(response2);
                        directionsDisplay1.setMap(null);
                    } else {
                        directionsDisplay1.setMap(map);
                        directionsDisplay1.setDirections(response1);
                        directionsDisplay2.setMap(null);
                    }
                }
            });
        }
    });

2 个答案:

答案 0 :(得分:0)

DirectionsService有一个方法route来计算两点之间的一条或多条路线。

您可以为每个fire - station对调用此方法,并检查返回的路由以确定最短路径。

答案 1 :(得分:0)

路线服务受费率限制,并受配额限制。如果你有很多积分,你将无法在循环中为所有积分调用它。

一个建议是计算到所有点的直线距离,然后计算到那些结果中最接近的8的行驶距离(假设开始时有超过8个)。我建议8,因为那是你在路线请求中输入的最大路标数量,我想如果你将optimize_waypoints设置为true并将所有这8个路点作为路点添加到往返(起点和终点是相同的),您将获得第一个或最后一个航路点与起点之间的最短驾驶距离。

另一种方法是使用谷歌的distance matrix api