Геодезическая линия на сфере или эллипсоиде представляет собой кратчайший путь между двумя точками на поверхности. В контексте картографических систем, основанных на модели Земли как сферы, геодезическая линия отличается от прямой линии на плоскости тем, что учитывает кривизну поверхности.
В геометрии сферы геодезическая линия соответствует дуге большого круга. Любая пара точек на поверхности задаёт единственную дугу, если они не являются антиподами. В прикладных картографических системах это свойство используется для корректного отображения маршрутов, измерения расстояний и визуализации траекторий.
В Google Maps JavaScript API геодезические линии реализуются через
параметр geodesic у объекта Polyline. При
установке значения true ломаная линия перестаёт
интерпретироваться как набор прямых сегментов в проекции Меркатора и
отображается как последовательность дуг, приближённых к поверхности
сферы.
Обычная ломаная линия на карте строится в экранных координатах проекции. Каждое звено соединяет две точки прямым отрезком в двумерной системе координат после проецирования географических координат.
Геодезическая интерпретация изменяет поведение:
При больших расстояниях различие становится существенным. Например, между городами на разных континентах планарная линия может проходить через визуально «неправильные» области карты, тогда как геодезическая линия изгибается, отражая кратчайший путь по поверхности Земли.
В основе построения лежит сферическая интерполяция между двумя точками. Для каждой пары координат выполняется преобразование в трёхмерное представление на единичной сфере:
Для последовательности точек API аппроксимирует каждое звено набором промежуточных сегментов, создающих визуально плавную дугу.
При этом точная геодезическая модель на эллипсоиде WGS84 в полной форме не используется для каждого кадра отрисовки — применяется приближённая сферическая модель, достаточная для визуализации в веб-картах.
В Google Maps JavaScript API геодезическая линия задаётся через
объект google.maps.Polyline с параметром
geodesic: true.
const path = [
{ lat: 55.7558, lng: 37.6173 }, // Москва
{ lat: 48.8566, lng: 2.3522 }, // Париж
{ lat: 40.7128, lng: -74.0060 } // Нью-Йорк
];
const polyline = new google.maps.Polyline({
path: path,
geodesic: true,
strokeColor: "#1a73e8",
strokeOpacity: 0.9,
strokeWeight: 3
});
polyline.setMap(map);
В этом случае каждое соединение между точками будет визуализировано как дуга большого круга.
Геодезическая линия поддерживает все стандартные параметры стилизации
Polyline:
strokeColor — цвет линии;strokeOpacity — прозрачность;strokeWeight — толщина;icons — повторяющиеся символы вдоль линии;zIndex — порядок наложения.Стилизация не влияет на геодезическую природу линии, но влияет на восприятие траектории. Особенно это важно при наложении нескольких маршрутов, где визуальная дифференциация играет ключевую роль.
Пример использования символов вдоль геодезической линии:
const line = new google.maps.Polyline({
path: path,
geodesic: true,
strokeOpacity: 0,
icons: [{
icon: {
path: google.maps.SymbolPath.CIRCLE,
scale: 3,
fillColor: "#4285f4",
fillOpacity: 1,
strokeWeight: 0
},
repeat: "20px"
}]
});
При увеличении расстояния между точками различия между планарной и геодезической моделью становятся более выраженными.
На картах в проекции Меркатора:
Это связано с тем, что на сфере кратчайшая дуга большого круга может существенно отклоняться от визуально «прямого» пути в проекции.
При работе с маршрутами, состоящими из множества точек, геодезическая интерпретация применяется к каждому сегменту отдельно.
const route = new google.maps.Polyline({
path: [
{ lat: 34.0522, lng: -118.2437 },
{ lat: 36.1699, lng: -115.1398 },
{ lat: 39.7392, lng: -104.9903 },
{ lat: 41.8781, lng: -87.6298 }
],
geodesic: true
});
Каждое соединение между последовательными точками интерпретируется как независимая геодезическая дуга. В результате формируется ломаная линия, повторяющая кривизну Земли на каждом участке маршрута.
Геодезические линии могут быть интерактивными. Поддерживаются события:
click — нажатие на линию;mouseover — наведение курсора;mouseout — уход курсора;dblclick — двойное нажатие.polyline.addListener("click", (event) => {
console.log(event.latLng.lat(), event.latLng.lng());
});
События работают на уровне проекции, однако координаты события возвращаются в географической системе, что упрощает интеграцию с геопространственными вычислениями.
Геодезические линии часто применяются для визуализации:
В таких случаях геодезическая линия отражает не фактический маршрут движения, а идеализированную кратчайшую траекторию по поверхности Земли.
Геодезическая модель в Google Maps JavaScript API основана на приближении сферой, а не эллипсоидом. Это накладывает ограничения:
Для задач высокой точности (геодезические расчёты в инженерии) используются специализированные библиотеки, учитывающие эллипсоид WGS84 с полной параметризацией.
Отрисовка геодезических линий требует дополнительной геометрической аппроксимации. При увеличении количества точек:
Оптимизация достигается через:
Геодезические линии часто используются совместно с другими объектами API:
Marker) для обозначения узлов маршрута;Polygon) для областей;HeatmapLayer) для плотности точек;При комбинировании важно учитывать порядок отрисовки, поскольку
геодезические линии визуально могут пересекать другие слои в зависимости
от zIndex.
Геодезические линии динамически пересчитываются при изменении масштаба и проекции. При сильном приближении дуги становятся менее выраженными и визуально приближаются к прямым сегментам, поскольку локально кривизна Земли становится менее заметной.
При уменьшении масштаба эффект кривизны усиливается, и траектория принимает характерную дугообразную форму, отражающую глобальную геометрию.
Геодезические линии используются как инструмент визуализации глобальных систем связей:
В этих сценариях важна не только геометрическая корректность, но и визуальная интерпретируемость структуры на глобальном уровне. Геодезическая линия обеспечивает согласование визуального представления с реальной географией поверхности Земли.