0

在地图上,我必须标记数组。一个是静态的,让我们调用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);
                    }
                }
            });
        }
    });
4

2 回答 2

0

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

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

于 2012-07-05T13:31:11.603 回答
0

指示服务费率有限,并受配额限制。如果您有很多点,您将无法为所有点循环调用它。

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

另一个是使用谷歌的距离矩阵 api

于 2012-07-05T14:40:47.970 回答