@danilr

Как обновлять маркеры и попапы на карте 2ГИС?

Есть массив данных, который получаю и тут же в mounted() вывожу маркеры и попапы по этому массиву. Если меняется этот массив( фильтрую), то как заново инициализировать эти маркеры и попапы (ну или отсеять лишние)?
mounted() {
		this.markers = DG.featureGroup();
		this.popups = DG.featureGroup();

		this.map = DG.map("map", {
			center: [54.98, 82.89],
			zoom: 13,
			minZoom: 7,
			zoomControl: false,
			fullscreenControl: false
		});
      this.dataRequest.then(response => {
				this.getFilterRooms.forEach(residential => {
					let myDivIcon = DG.divIcon({
						iconSize: [30, 30],
						className: "marker-custom",
						html: this.setMiniMarker(residential)
					});

					this.popupMap = DG.popup({
						className: "test-name",
						closeButton: false,
						offset: DG.point(0, 1),
						setZoomMarker: false
					}).setContent(this.setPopupMarker(residential));

					this.coordinates = [residential.latitude, residential.longitude];
					DG.marker(this.coordinates, { icon: myDivIcon })
						.addTo(this.markers)
						.bindPopup(this.popupMap);
				});
				this.markers.addTo(this.map);
				this.map.fitBounds(this.markers.getBounds());
				this.markers.on("click", event => {
					//при наведении.mouseover, click на маркер
					if (event.originalEvent.target.closest("[data-id]")) {
						let residentialId = Number(
							event.originalEvent.target.closest("[data-id]").dataset.id
						);
						this.setResidentialId(residentialId);

					}
				});
  • Вопрос задан
  • 559 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
Делаете метод добавления маркеров, который перед добавлением будет удалять существующие маркеры. И ещё делаете watch на массив отфильтрованных данных, на основе которого маркеры создаются - там этот метод и вызываете. Например.

Или можно создать сразу все маркеры, в watcher'e обходить исходный массив данных, и помещать на карту/убирать с карты маркер в зависимости от того, присутствует ли текущее значение в отфильтрованном массиве - тоже вариант.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы