Разбейте полилинию на 160 метров, используя PHP - PullRequest
1 голос
/ 08 марта 2019

Я пытаюсь разбить полилинию на четные отрезки длиной около 160 метров, используя PHP.

У меня есть функция PHP, в которой я передаю 4 переменные. Lat и Lng начала полилинии и Lat и Lng конца полилинии. Затем мне нужно вернуть массив всех координат Lat и Lng, которые составляют ломаную линию, разделенную на приблизительно 160 метров в длину.

При поиске на этом сайте я обнаружил следующую функцию, которая возвращает середину полилинии:

function midpoint ($lat1, $lng1, $lat2, $lng2) {

    $lat1= deg2rad($lat1);
    $lng1= deg2rad($lng1);
    $lat2= deg2rad($lat2);
    $lng2= deg2rad($lng2);

    $dlng = $lng2 - $lng1;
    $Bx = cos($lat2) * cos($dlng);
    $By = cos($lat2) * sin($dlng);
    $lat3 = atan2( sin($lat1)+sin($lat2),
    sqrt((cos($lat1)+$Bx)*(cos($lat1)+$Bx) + $By*$By ));
    $lng3 = $lng1 + atan2($By, (cos($lat1) + $Bx));
    $pi = pi();

    return ($lat3*180)/$pi .' '. ($lng3*180)/$pi;
}

Можно ли в любом случае изменить эту функцию, чтобы она возвращала координаты приблизительно на расстоянии 160 метров? Длина не обязательно должна быть точно 160, если отрезки ломаной линии будут равны.

...