Great Circle

| Нет комментариев

Гугл-карты с третьей версией API научились рисовать путь между двумя пунктами на Земле по «большому кругу» (great circle), поэтому без жалости можно отправить в архив фрагмент кода, вычисляющий координаты дуги.

my $span = 10;
$span = int($distance) / 100 if int($distance) > $span * 100;

my $arc = (new Geo::GoogleEarth::Pluggable)
          ->GreatCircleArcSegment(
    startPoint => {
        lat => $coords_pair[0],
        lon => $coords_pair[1]
    },
    endPoint   => {
        lat => $coords_pair[2],
        lon => $coords_pair[3]
    },
    span        => $span * 1000, # meters
);

my $arcNode = add_node($pairNode, 'arc');   
for (@{$arc->coordinates}) {
    add_node(
        $arcNode,
        'point', {
            lat  => $_->lat,
            long => $_->lon,
        },
    );
}

Еще большая часть ушла из яваскрипта. Перед этим мой коллега проверил, насколько расходятся пути Гугла и наш. Чтобы заметить разницу, пришлось сократить число точек, иначе обе линии полностью сливались.

Great circle

Комментировать

Страницы

  • img

Об этой записи

Сообщение опубликовано 09.04.2010 00:28. Автор — ash.

Предыдущая запись — Hello, Perl 5--

Следующая запись — Perl на РИТ++ в понедельник и вторник

Смотрите новые записи на главной странице или загляните в архив, где есть ссылки на все сообщения.