Google Maps JavaScript API — это библиотека компании Google, предназначенная для встраивания интерактивных карт в веб-приложения и сайты с использованием JavaScript. API предоставляет программный интерфейс для отображения картографических данных, управления картой, работы с географическими объектами и интеграции геолокационных сервисов.
Библиотека позволяет не просто отображать карту, а создавать полноценные геоинформационные интерфейсы:
Google Maps JavaScript API является частью платформы Google Maps Platform и тесно интегрируется с другими сервисами экосистемы Google Maps.
Базовая функция API — создание карты внутри HTML-элемента.
После инициализации разработчик получает объект карты, который позволяет программно изменять практически все её параметры.
Пример создания карты:
<div id="map"></div>
<script>
function initMap() {
const map = new google.maps.Map(
document.getElementById("map"),
{
center: {
lat: 55.7558,
lng: 37.6176
},
zoom: 10
}
);
}
</script>
После создания карты становятся доступны все остальные возможности API.
Карта всегда имеет центральную точку.
Для управления центром используются географические координаты:
map.setCenter({
lat: 59.9386,
lng: 30.3141
});
Получение текущего центра:
const center = map.getCenter();
console.log(center.lat());
console.log(center.lng());
Это позволяет динамически перемещать карту при действиях пользователя или изменении данных приложения.
Уровень приближения задаётся параметром zoom.
Пример:
const map = new google.maps.Map(element, {
center: {
lat: 55.7558,
lng: 37.6176
},
zoom: 12
});
Изменение масштаба:
map.setZoom(15);
Получение текущего масштаба:
const zoom = map.getZoom();
Чем больше значение, тем сильнее приближение.
Google Maps поддерживает несколько режимов отображения.
Основные типы:
| Тип | Описание |
|---|---|
| roadmap | Стандартная дорожная карта |
| satellite | Спутниковые снимки |
| hybrid | Спутниковые снимки с подписями |
| terrain | Рельеф местности |
Пример:
const map = new google.maps.Map(element, {
center: {
lat: 55.7558,
lng: 37.6176
},
zoom: 10,
mapTypeId: "satellite"
});
Переключение типа карты возможно в любой момент работы приложения.
В основе библиотеки лежит объектная модель.
Наиболее важные классы:
| Класс | Назначение |
|---|---|
| Map | Карта |
| Marker | Маркер |
| InfoWindow | Информационное окно |
| Polyline | Ломаная линия |
| Polygon | Полигон |
| Circle | Окружность |
| Rectangle | Прямоугольник |
| DirectionsService | Построение маршрутов |
| Geocoder | Геокодирование |
| StreetViewPanorama | Панорамы улиц |
Большинство операций выполняется через создание экземпляров этих классов.
Google Maps использует систему координат WGS84.
Каждая точка определяется двумя значениями:
{
lat: 55.7558,
lng: 37.6176
}
где:
lat — широта;lng — долгота.Пример координат некоторых городов:
| Город | Широта | Долгота |
|---|---|---|
| Москва | 55.7558 | 37.6176 |
| Санкт-Петербург | 59.9386 | 30.3141 |
| Алматы | 43.2389 | 76.8897 |
| Астана | 51.1694 | 71.4491 |
Для хранения координат используется специальный класс.
const position =
new google.maps.LatLng(
55.7558,
37.6176
);
Получение значений:
position.lat();
position.lng();
Использование класса обеспечивает корректную обработку координат внутри API.
Google Maps активно использует события.
Каждый объект может генерировать различные события:
Пример обработки клика:
map.addListener("click", (event) => {
console.log(
event.latLng.lat(),
event.latLng.lng()
);
});
При щелчке по карте будут получены координаты выбранной точки.
Маркер представляет собой визуальную отметку на карте.
Пример:
const marker =
new google.maps.Marker({
position: {
lat: 55.7558,
lng: 37.6176
},
map: map
});
Маркеры используются для отображения:
Добавление заголовка:
const marker =
new google.maps.Marker({
position: position,
map: map,
title: "Главный офис"
});
Создание перетаскиваемого маркера:
const marker =
new google.maps.Marker({
position: position,
map: map,
draggable: true
});
Отслеживание завершения перемещения:
marker.addListener(
"dragend",
() => {
console.log(
marker.getPosition()
);
}
);
Информационное окно отображает дополнительную информацию о выбранном объекте.
Создание окна:
const infoWindow =
new google.maps.InfoWindow({
content: `
<h3>Москва</h3>
<p>Столица России</p>
`
});
Открытие по нажатию на маркер:
marker.addListener(
"click",
() => {
infoWindow.open({
anchor: marker,
map
});
}
);
Информационные окна часто используются для вывода:
Ломаные линии создаются классом Polyline.
Пример:
const line =
new google.maps.Polyline({
path: [
{lat: 55.75, lng: 37.61},
{lat: 55.80, lng: 37.70},
{lat: 55.85, lng: 37.80}
],
strokeColor: "#ff0000",
strokeWeight: 3,
map: map
});
Применяются для отображения:
Полигон представляет собой замкнутую область.
const polygon =
new google.maps.Polygon({
paths: [
{lat: 55.70, lng: 37.50},
{lat: 55.80, lng: 37.70},
{lat: 55.65, lng: 37.80}
],
fillColor: "#00ff00",
fillOpacity: 0.4,
map: map
});
Полигоны позволяют отображать:
Для отображения радиусов используется класс Circle.
const circle =
new google.maps.Circle({
center: {
lat: 55.7558,
lng: 37.6176
},
radius: 5000,
map: map
});
Радиус задаётся в метрах.
Типичные сценарии:
Преобразование адреса в координаты.
const geocoder =
new google.maps.Geocoder();
geocoder.geocode(
{
address: "Москва, Красная площадь"
},
(results, status) => {
console.log(results);
}
);
Результатом являются координаты найденного объекта.
Преобразование координат в адрес.
geocoder.geocode(
{
location: {
lat: 55.7558,
lng: 37.6176
}
},
(results, status) => {
console.log(
results[0].formatted_address
);
}
);
Такая операция часто используется в сервисах доставки и навигации.
Для построения маршрутов используются два основных класса:
google.maps.DirectionsService
google.maps.DirectionsRenderer
Сервис вычисляет маршрут:
const directionsService =
new google.maps.DirectionsService();
Отрисовщик отображает результат:
const directionsRenderer =
new google.maps.DirectionsRenderer();
directionsRenderer.setMap(map);
Пример запроса:
directionsService.route({
origin: "Москва",
destination: "Тула",
travelMode: "DRIVING"
});
Поддерживаются различные способы передвижения:
Google Maps предоставляет доступ к сервису Street View.
Создание панорамы:
const panorama =
new google.maps.StreetViewPanorama(
document.getElementById(
"street-view"
),
{
position: {
lat: 55.7558,
lng: 37.6176
}
}
);
Панорама представляет собой сферическое изображение местности, позволяющее осматривать окружающее пространство на 360 градусов.
API позволяет создавать собственные кнопки и панели управления.
Пример:
const button =
document.createElement("button");
button.textContent =
"Перейти в центр";
button.addEventListener(
"click",
() => {
map.setCenter({
lat: 55.7558,
lng: 37.6176
});
}
);
map.controls[
google.maps.ControlPosition
.TOP_LEFT
].push(button);
Подобным образом реализуются:
Google Maps JavaScript API загружается из внешнего скрипта.
Современный способ подключения использует динамический импорт библиотек.
Пример:
const { Map } =
await google.maps.importLibrary(
"maps"
);
Преимущества подхода:
Использование карт для:
Использование API позволяет:
На основе Google Maps реализуются:
Карты помогают отображать:
Применение включает:
Высокая детализация карт
Сервис предоставляет актуальные картографические данные для большинства стран мира.
Большое количество встроенных сервисов
Платформа объединяет карты, маршруты, геокодирование, поиск мест, панорамы и геолокационные инструменты.
Гибкость настройки
Практически любой элемент карты может быть изменён программно.
Хорошая интеграция с JavaScript
API разработан специально для веб-приложений и органично вписывается в современные фронтенд-фреймворки:
Развитая событийная система
События позволяют создавать сложные интерактивные сценарии взаимодействия с картой.
Масштабируемость
Одна и та же библиотека подходит как для небольших сайтов, так и для крупных геоинформационных платформ с тысячами объектов на карте.