Генерация нового широты / долготы между существующими широтами и долготой, предоставляемыми Google Maps Directions API - PullRequest
0 голосов
/ 12 мая 2018

Я использую Google Directions Service для запроса пути от начальной точки до конечной точки.Это, очевидно, возвращает список маркеров 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

У меня возникли проблемы с выяснением алгоритма, который будет генерировать больше лат / Lng-маркеров междусуществующие.

Чтобы представить это еще дальше, приведем еще одну диаграмму.Красные X показывают точки, которые возвращает вызов.Затем я добавил Blue X сверху, чтобы показать, как я хочу, чтобы результат выглядел.enter image description here

Спасибо !!!

1 Ответ

0 голосов
/ 13 мая 2018

Для каждой линии, соединяющей красные точки:

Используйте эту функцию , чтобы определить расстояние между двумя точками. Выясните, как близко вы хотите, чтобы синие буквы Х были, например, 30 м? 50м? Переменная в зависимости от масштаба? Используя это, определите, сколько новых точек вы хотите получить между двумя конечными точками. Затем для каждого широты / долготы разделите разницу между конечными точками на (новые точки + 1), чтобы определить, какую разницу широты / долготы должна иметь каждая новая точка.

Например: начать с конечных точек

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)
...