在 Google 地图方向 API 提供的现有 Lat/Lng 之间生成新的 Lat/Lng

Generate new Lat/Lng between existing Lat/Lng provided by Google Maps Directions API

我正在使用 Google 地图路线服务来请求从起点到终点的路径。这显然是 returns 一个 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;
  }

    }
  });

我无法找出一种算法,该算法将在现有算法之间生成更多 Lat/Lng 'markers'。

为了进一步形象化,这里是另一个图表。红色 X 显示调用 returns 的点。然后我在顶部添加了 Blue X 以显示我想要的结果。

谢谢!!!

对于连接红点的每条线:

使用this function确定两点之间的距离。计算出您希望蓝色 X 的距离有多近——例如 30m? 50公尺?随变焦而变化?使用它,确定您想要在两个端点之间提出多少个新点。然后,对于每个 lat/lng,将端点之间的差异除以(新点 + 1),得出每个新点应该有多少 lat/lng 差异。

例如:从端点开始

Lat 100, Lng 80

Lat 110, Lng 60

(distance too large, but this is just an example)假设你做了一个计算,发现你需要4个额外的点。每个点之间的纬度差为:

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

每个点之间的纬度差为:

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

生成 4 个新点,使用这些差异来计算它们 lat/lng:

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