在Google Maps Directions API

时间:2018-05-12 18:36:12

标签: javascript google-maps web navigation markers

我正在使用Google地图路线服务来请求从起点到终点的路径。这显然会返回一个Lat / Lng标记列表,它们被连接起来绘制路径。代码如下所示:

  directionsService.route(request, function(result, status) {
    if (status == 'OK') {
      directionsDisplay.setDirections(result);
      var myRoute = result.routes[0].legs[0];
      //console.log(myRoute);

      for (var i = 0; i < myRoute.steps.length; i++) {
      var marker = new google.maps.Marker({
        position: myRoute.steps[i].start_point,
        map: map
      });
      console.log(myRoute.steps[i].start_point.lat(),myRoute.steps[i].start_point.lng() );
      attachInstructionText(marker, myRoute.steps[i].instructions);
      markerArray[i] = marker;
  }

    }
  });

enter image description here

我无法找出能产生更多Lat / Lng标记的算法。在现有的之间。

为了进一步可视化,这是另一个图表。红色X显示呼叫返回的点。然后我在上面添加了Blue X,以显示我想要的结果。 enter image description here

感谢!!!

1 个答案:

答案 0 :(得分:0)

对于连接红点的每一行:

使用this function确定两点之间的距离。弄清楚你想要蓝色X的接近程度 - 例如,30米? 50公尺?变量取决于缩放?使用它,确定两个端点之间想要提出的新点数。然后,对于每个lat / lng,将端点之间的差除以(新点+ 1),得出每个新点应该有多少lat / lng差异。

例如:从端点开始

Lat 100, Lng 80

Lat 110, Lng 60

(距离太大,但这只是一个例子)假设您进行计算并发现您需要4个额外点。每个点之间的纬度差异为:

(110 - 100) / (4 + 1) = 10 / 5 = 2

每个点之间的纬度差异为:

(60 - 80) / (4 + 1) = -20 / 5 = -4

生成4个新点,使用这些差异来计算它们的纬度/经度:

(100, 80) (start)
(102, 76)
(104, 72)
(106, 68)
(108, 64)
(110, 60) (end)