Параметры маркера в Google Maps Platform JavaScript API определяют внешний вид, поведение и взаимодействие объекта Marker на карте. Конфигурация передаётся в виде объекта при создании маркера и напрямую влияет на его отображение, событийную модель и производительность.
Создание маркера осуществляется через конструктор:
const marker = new google.maps.Marker({
position: { lat: 40.7128, lng: -74.0060 },
map: map
});
Объект параметров включает набор свойств, каждое из которых отвечает за конкретный аспект поведения маркера.
position определяет географическое положение маркера на карте. Это обязательный параметр для отображения.
Поддерживаются два формата:
{ lat: number, lng: number }google.maps.LatLngposition: { lat: 55.751244, lng: 37.618423 }
position: new google.maps.LatLng(55.751244, 37.618423)
Координаты привязывают маркер к глобальной системе WGS84, используемой Google в картографических сервисах.
Параметр map определяет, на какой объект карты будет добавлен маркер.
map: map
Если значение не указано, маркер создаётся, но не отображается до вызова:
marker.setMap(map);
Удаление маркера выполняется через:
marker.setMap(null);
title задаёт текст, который отображается при наведении курсора.
title: "Центральная точка"
Используется для улучшения доступности и быстрого понимания значения маркера без дополнительных UI-элементов.
Параметр icon управляет визуальным представлением маркера.
icon: "https://example.com/icon.png"
icon: {
url: "https://example.com/icon.png",
scaledSize: new google.maps.Size(32, 32)
}
icon: {
path: google.maps.SymbolPath.CIRCLE,
scale: 6,
fillColor: "#FF0000",
fillOpacity: 1,
strokeWeight: 1
}
Использование кастомных иконок позволяет адаптировать маркеры под визуальный стиль интерфейса или тип данных.
label добавляет краткую текстовую подпись поверх маркера.
label: "A"
Также поддерживается объектная форма:
label: {
text: "A",
color: "white",
fontSize: "12px"
}
Ограничение: label предназначен для коротких строк, обычно один символ или число.
Параметр draggable включает возможность перемещения маркера пользователем.
draggable: true
При включении активируются события:
dragstartdragdragendПример обработки:
marker.addListener("dragend", (event) => {
console.log(event.latLng.toString());
});
Параметр animation задаёт поведение маркера при добавлении.
Доступные значения:
google.maps.Animation.DROPgoogle.maps.Animation.BOUNCEanimation: google.maps.Animation.DROP
Анимация часто используется для визуального выделения новых объектов на карте.
zIndex определяет порядок отображения маркеров при наложении.
zIndex: 1000
Чем больше значение, тем выше приоритет отрисовки.
Это особенно важно при плотном размещении объектов в одной географической зоне.
Параметр visible определяет, отображается ли маркер на карте.
visible: true
Скрытие без удаления:
marker.setVisible(false);
В отличие от setMap(null), маркер сохраняет состояние и
может быть быстро восстановлен.
opacity регулирует степень прозрачности маркера.
opacity: 0.7
Значения варьируются от 0 (полностью прозрачный) до 1 (полностью непрозрачный).
Параметр clickable включает или отключает обработку кликов.
clickable: true
При значении false маркер становится визуальным
элементом без интерактивности.
cursor задаёт стиль курсора при наведении.
cursor: "pointer"
Используется для улучшения UX при интерактивных слоях карты.
Параметр shape задаёт область, в пределах которой маркер считается кликабельным.
shape: {
coords: [1, 1, 1, 20, 18, 20, 18, 1],
type: "poly"
}
Используется редко, преимущественно при сложных кастомных иконках.
optimized управляет способом отрисовки маркеров.
optimized: true
При значении true маркеры объединяются в один слой для
повышения производительности.
При false каждый маркер отрисовывается отдельно, что
полезно при сложных анимациях или кастомных элементах.
Параметры маркера напрямую влияют на доступные события:
marker.addListener("click", () => {
console.log("Маркер нажат");
});
Изменение параметров во время выполнения:
marker.setIcon(newIcon);
marker.setLabel("B");
marker.setDraggable(false);
const marker = new google.maps.Marker({
position: { lat: 48.8566, lng: 2.3522 },
map: map,
title: "Paris",
icon: {
url: "/icons/marker.png",
scaledSize: new google.maps.Size(40, 40)
},
label: {
text: "P",
color: "#ffffff"
},
draggable: true,
animation: google.maps.Animation.DROP,
zIndex: 10,
opacity: 0.9,
clickable: true,
cursor: "pointer",
optimized: true
});
Такой набор параметров формирует полностью управляемый маркер, интегрированный в инфраструктуру Google Maps Platform и адаптированный под интерактивные картографические интерфейсы.