vexgg
@vexgg
The happiest man alive.

Как отключить обработку функцией карты 2gis второй раз?

Использую 2gis api, и у меня такая проблема.

$("#town_select").change(function(){ 
  var lat = $("#town_select option:selected").data('lat');
  var lng = $("#town_select option:selected").data('lng');

  var DG = require('2gis-maps');
  if ($('#building_add-map').length) {
    DG.then(function() {
      var map = DG.map('building_add-map', {
        'center': [lat, lng],
        'zoom': 17,
        'scrollWheelZoom': false
      });
      DG.marker([lat, lng]).addTo(map);
    });
  };
});

Из-за того, что функция .on("change") он обрабатывает строку

var map = DG.map('building_add-map', {
        'center': [lat, lng],
        'zoom': 17,
        'scrollWheelZoom': false
      });
каждый раз при изменении формы, и мне выводит ошибку "Error: Map container is already initialized.". Как решить эту проблемы?
  • Вопрос задан
  • 279 просмотров
Пригласить эксперта
Ответы на вопрос 1
vexgg
@vexgg Автор вопроса
The happiest man alive.
Я решил проблему, может кому поможет. Вот как выглядит мой код.
$(".map").empty();
$(".map").append('<div id="map" style="width: 100%; height: 250px;"></div>')

var DG = require('2gis-maps');
 if ($('#map').length){
  var locationInfo = document.getElementById('location');
    DG.then(function () {
      var map,
        marker;
      map = DG.map('map', {
        center: [lat, lng],
        zoom: 9
      });
      marker = DG.marker([lat, lng], {
        draggable: false
      }).addTo(map);
      marker.on('drag', function(e) {
        var lat_edited = e.target._latlng.lat.toFixed(6);
        var lng_edited = e.target._latlng.lng.toFixed(6);
      });
    });
    }


<div class="map" style="margin-bottom: 20px;"></div>


Что я делаю, я сначала очищаю div с классом map, тем самым убираю старую карту, и создаю новый div с id map. А потому уже сама карта, как же я долго мучался. ))
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы