Система координат, используемая в Google Maps JavaScript API,
основана на географической модели широты и долготы, где каждая точка на
поверхности Земли определяется парой значений: latitude (широта) и
longitude (долгота). В API эти значения инкапсулируются в объект
LatLng, который является фундаментальной единицей
позиционирования объектов на карте.
Базовая система координат соответствует модели WGS84 (World Geodetic System 1984), применяемой в GPS-навигации. Она описывает положение точки на эллипсоиде Земли:
Диапазоны значений строго определены:
Эта система не является плоской, поэтому напрямую не используется для отрисовки на экране. Для визуализации Google Maps применяет проекцию Mercator, но внутри логика координат остаётся географической.
В JavaScript API координаты чаще всего представлены через класс
google.maps.LatLng. Он инкапсулирует широту и долготу и
предоставляет методы для работы с ними.
Основные способы создания:
const point = new google.maps.LatLng(55.751244, 37.618423);
Также поддерживается объектный литерал:
const point = { lat: 55.751244, lng: 37.618423 };
Однако такой формат не является полноценным экземпляром
LatLng, а относится к типу LatLngLiteral.
Объект LatLng предоставляет методы чтения значений:
const lat = point.lat();
const lng = point.lng();
Координаты нельзя изменять напрямую. Объект является иммутабельным, что важно для предсказуемости работы API и кэширования.
В API существует два близких представления координат:
{ lat: number, lng: number }Пример использования в настройках карты:
const mapOptions = {
center: { lat: 48.8566, lng: 2.3522 },
zoom: 10
};
API автоматически преобразует литералы в LatLng.
Google Maps выполняет нормализацию значений долготы. Это означает, что значения вне диапазона -180…180 приводятся к допустимому виду.
Пример:
Широта ограничивается жёстче и не “зацикливается”, а обрезается к допустимому диапазону.
Сравнение объектов LatLng требует осторожности. Прямое
сравнение через === не работает, так как сравниваются
ссылки на объекты.
Правильный подход:
point1.equals(point2);
Метод equals учитывает числовые значения широты и
долготы, включая допустимую погрешность представления чисел с плавающей
точкой.
Координаты хранятся в формате IEEE 754 double precision. Это означает:
=== ненадёжноПоэтому API использует встроенные методы сравнения и округления.
Объект LatLng поддерживает преобразование в JSON:
point.toJSON();
Результат:
{ lat: 55.751244, lng: 37.618423 }
Это важно при сериализации данных, например при сохранении состояния карты или передаче координат на сервер.
Также существует строковое представление:
point.toString();
Формат обычно выглядит как:
(55.751244, 37.618423)
Объект LatLng используется во всех ключевых компонентах
API:
const map = new google.maps.Map(document.getElementById("map"), {
center: new google.maps.LatLng(40.7128, -74.0060),
zoom: 12
});
const marker = new google.maps.Marker({
position: { lat: 40.7128, lng: -74.0060 },
map: map
});
const bounds = new google.maps.LatLngBounds(
new google.maps.LatLng(40.5, -74.2),
new google.maps.LatLng(40.9, -73.7)
);
LatLngBounds использует две координаты: юго-западную и
северо-восточную точки.
Одной из сложных ситуаций является пересечение линии ±180° долготы (анти-меридиана). В этом случае:
LatLngBounds учитывает это и корректно расширяет
границыЭто особенно важно при работе с глобальными масштабами и маршрутами.
Хотя разработчик работает с LatLng, внутри системы
координаты преобразуются в пиксельные значения через проекцию
Mercator:
Это позволяет отображать карту в 2D-пространстве браузера, сохраняя географическую логичность.
Часто требуется переход между формами координат:
const literal = point.toJSON();
const latLng = new google.maps.LatLng(literal.lat, literal.lng);
API также автоматически выполняет такие преобразования при передаче параметров.
Многие события API возвращают координаты в формате
LatLng:
map.addListener("click", (event) => {
const position = event.latLng;
});
event.latLng всегда является экземпляром
google.maps.LatLng, что позволяет сразу использовать методы
объекта без дополнительной обработки.
Модель LatLng служит универсальным стандартом для:
Её неизменяемость, точность и совместимость с географической системой координат обеспечивают стабильную работу всей экосистемы Google Maps JavaScript API.