@danilr

Как сделать паузу между добавлением маркеров на карту 2GIS?

Хочу сделать задержку между добавлением маркеров на карту 2гис в 200мс. Как это сделать?
Вот метод, создающий эти маркеры:

setMarkers(rcs){

      rcs.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);

						// добавление класса с задержкой для ожидания создания данных
						if (this.countFunctionMarker === 0) {
							setTimeout(() => (this.isOpenRc = true), 200);
						} else {
							this.isOpenRc = true;
						}
						this.countFunctionMarker++;

          }     
				});
    },
  • Вопрос задан
  • 109 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
rcs.forEach((residential, i) => {
  ...
  /*
   * никакого this при создании попапов не надо - какой смысл делать свойством
   * компонента один из многих попапов (т.к. тут цикл, новая итерация - новый
   * попап, в результате будет сохранён последний созданный)?
   *
   * то же касается и координат маркера ниже
   */
  const popup = DG.popup({
  ...

  setTimeout(() => {
    DG.marker([ residential.latitude, residential.longitude ], { icon: myDivIcon })
      .addTo(this.markers)
      .bindPopup(popup);
  }, i * 200);
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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