Карта листовки не обновляет вид - PullRequest
1 голос
/ 14 марта 2019

Я пытаюсь отобразить карту в модальном режиме, поэтому, когда я закрываю ее и открываю новую, карта всегда показывает первое местоположение вместо текущего модального.Я сбрасываю карту, но все равно ничего не происходит.

Перед тем, как открыть модал, я печатаю карту:

$('#openMap').on($.modal.BEFORE_OPEN, function(event, modal) {
   printMap('map', coord);
});

После закрытия модала я удаляю контейнер карты:

$('#openMap').on($.modal.AFTER_CLOSE, function(event, modal) {
   $('#map').remove();
});

Это код функции printMap:

var map = null; // Global variable
function printMap(map_id, coord) {
    const mapbox_token = '...';

    if(map) {
        map.eachLayer(function (layer) {
          map.removeLayer(layer);
        });
        map.off();
        map.remove();
        map.on('viewreset', function (e) {
           console.log('Reset view...') // Do not showed
        })
        delete map;
        map = null;
        // none of these work
    }

  // Load map
  map = L.map(map_id).setView(coord, 13);

  // Create the tile layer with correct attribution
  L.tileLayer(...).addTo(map);

  // Add marker
  L.marker(coord).addTo(map);

  // Invalidate size for modal
  $('.modal').on($.modal.OPEN, function (event, modal) {
    setTimeout(function(){ map.invalidateSize()}, 0);
  });
}

Надеюсь, кто-нибудь может мне помочь!Заранее спасибо!

1 Ответ

0 голосов
/ 15 марта 2019

Ваша переменная map является локальной для вашей функции printMap, т. Е. Всякий раз, когда вы выполняете эту функцию, она получает новое распределение для своей локальной переменной. Следовательно, map всегда неинициализирован при проверке.

Тогда у вас может возникнуть проблема с областью видимости для вашего значения coords, когда вы используете его, чтобы присоединить ваш модальный режим перед открытым слушателем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...