Перейти на расширенные маркеры

Поддержка google.maps.Marker (v3.56) прекращена с 21 февраля 2024 г. Рекомендуем перейти на новый класс google.maps.marker.AdvancedMarkerElement. Расширенные маркеры отличаются множеством существенных улучшений по сравнению с устаревшим классом google.maps.Marker.

Подробнее о прекращении поддержки…

Чтобы осуществить переход на новый класс, выполните следующие шаги:

  1. Добавьте код для импорта библиотеки маркеров (не требуется для предыдущей версии маркеров google.maps.Marker).
  2. Замените google.maps.Marker на google.maps.marker.AdvancedMarkerElement.
  3. Добавьте идентификатор mapId в код инициализации карты (пример: mapId: 'DEMO_MAP_ID'). Если у вас ещё нет идентификатора карты, используйте значение DEMO_MAP_ID.

Добавьте библиотеку расширенных маркеров

Метод загрузки библиотек зависит от того, как на ваших страницах загружается Maps JavaScript API.

  • Если это динамическая загрузка, добавьте библиотеку маркеров и импортируйте AdvancedMarkerElement (и, если нужно, PinElement) при выполнении, как это показано ниже.

    const { AdvancedMarkerElement, PinElement } = await google.maps.importLibrary("marker");
  • Если на ваших страницах используется устаревший тег для прямой загрузки, добавьте в загрузочный скрипт параметр libraries=marker, как показано во фрагменте кода ниже.

    <script
    src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap&v=weekly&libraries=marker"
    defer
    ></script>

Подробнее о загрузке Maps JavaScript API

Примеры

Ниже показан фрагмент кода с устаревшим классом Marker и далее – тот же самый код, в котором этот класс заменен на AdvancedMarkerElement.

До перехода

// The location of Uluru
const position = { lat: -25.344, lng: 131.031 };

const map = new google.maps.Map(document.getElementById("map"), {
  zoom: 4,
  center: position,
});

// The marker, positioned at Uluru
const marker = new google.maps.Marker({
  map: map,
  position: position,
  title: 'Uluru',
});

После перехода

  // The location of Uluru
  const position = { lat: -25.344, lng: 131.031 };

  const map = new google.maps.Map(document.getElementById("map"),  {
    zoom: 4,
    center: position,
    mapId: "DEMO_MAP_ID", // Map ID is required for advanced markers.
  });

    // The advanced marker, positioned at Uluru
    const marker = new google.maps.marker.AdvancedMarkerElement({
        map,
        position: position,
        title: 'Uluru',
    });

Функции расширенных маркеров

Расширенные маркеры можно настраивать способами, которые не были доступны для устаревшего класса, – менять размер маркеров, цвета фона, рамок и глифа. Также стало удобнее работать с собственными изображениями для маркеров, в том числе появилась возможность компоновать маркеры с помощью HTML и CSS. Подробнее об этом можно узнать из следующих статей: