Очищение слоя маркеров JavaScript API Яндекс Карт 3.0 или удаление всех маркеров перед добавлением новых

В моём приложении есть Vue-компонент для карты, реализованной с помощью JavaScript API Яндекс Карт 3.0. Я не использую Vuefy module.

В компонент карты я передаю массив объектов с координатами и расставляю по этим координатам маркеры. Добавляю маркеры на карту таким образом:

markersProps.forEach((el) => {
  const marker = new ymaps3.YMapMarker(
    {
      coordinates: el.coordinates,
      properties: el.properties,
    },
    markerElement,
  )
  map.addChild(marker)
})

Когда массив markersProps меняется, я хочу удалить с карты все имеющиеся маркеры (или очистить слой карты, на который помещаются маркеры) и рисовать новые маркеры заново.

watch(
  () => props.markerData,
  (newMarkers, oldMarkers) => {
    // здесь нужно очистить слой маркеров или удалить имеющиеся маркеры
    addMarkers(newMarkers)
  },
  { deep: true },
)

Я пробовал хранить добавленные на карту маркеры в отдельной переменной const addedMarkers = ref<YMapMarker[]>([]) и передавать их в map.removeChild(marker), но это не сработало (removeChild метод ожидает аргумент типа YMapEntity<unknown, {}>, а я пытаюсь передавать ему YMapMarker).

Так же я не нашёл в документации методов очищения дефолтных или кастомных слоёв.

Как я могу реализовать описанный функционал обновления маркеров на карте?


Ответы (0 шт):