【问题标题】:Generate new Lat/Lng between existing Lat/Lng provided by Google Maps Directions API在 Google Maps Directions API 提供的现有 Lat/Lng 之间生成新的 Lat/Lng
【发布时间】:2018-10-22 21:15:19
【问题描述】:

我正在使用 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;
  }

    }
  });

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

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

谢谢!!!

【问题讨论】:

  • 你想要多少分?你可以使用现有的点(来自折线)吗?他们之间的距离有什么限制吗?
  • 如果点之间的线是直的,那么计算应该相对简单,但是如果线是弯曲的,比如你的第一张图片,那就麻烦多了。
  • @geocodezip 没有限制,只需要比已经提供的更多。更多可以表示从 1 到尽可能多的任何内容
  • @CertainPerformance 这就是我的想法。知道计算实际上会是什么样子吗?我假设类似于两个纬度/经度之间的距离

标签: javascript google-maps web navigation markers


【解决方案1】:

对于连接红点的每条线:

使用this function 确定两点之间的距离。弄清楚您希望蓝色 X 靠得多近——例如 30m? 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 个新点,使用这些差异计算它们的 lat/lng:

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

【讨论】:

  • 它似乎对直线区域非常有效,但对于我们上面已经说过的弯曲道路来说效果不佳。
猜你喜欢
  • 2018-05-20
  • 1970-01-01
  • 1970-01-01
  • 2012-03-11
  • 1970-01-01
  • 2018-06-30
  • 2019-08-11
  • 2012-03-05
  • 1970-01-01
相关资源
最近更新 更多