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

Я продолжаю получать сообщение об ошибке:

Uncaught Error: Map container is already initialized.

Используя следующий код:

$('#example1').on('click', 'tr > td > a.loadMap', function(e) 
{
  e.preventDefault();
  var $dataTable = $('#example1').DataTable();
  var tr = $(this).closest('tr');
  var data = $dataTable.rows().data();

  var actramp = $(this).attr('data-actramp');
  var actimpdel = $(this).attr('data-actimpdel');   
  var actramplat = parseFloat($(this).attr('data-actramplat'));
  var actramplng = parseFloat($(this).attr('data-actramplng'));
  var actdellat = parseFloat($(this).attr('data-actdellat'));
  var actdellng = parseFloat($(this).attr('data-actdellng'));
  var actreclat = parseFloat($(this).attr('data-actreclat')); 
  var actreclng = parseFloat($(this).attr('data-actreclng')); 

  $('#actionMatchbackModal').modal('show');

  $("#actionMatchbackModal").on("shown.bs.modal", function () {
    initMap(actramp, actimpdel, actexpreceipt, actramplat, actramplng, actreclat, actreclng, actdellat, actdellng); 
  });
});

function initMap(actramp, actimpdel, actexpreceipt, actramplat, actramplng, actreclat, actreclng, actdellat, actdellng)
{
  var map = L.map('map').setView([actreclat,actreclng], 8);

  // vvv this was an answer provided from another post vvv
  if (map != undefined) {
    map.remove();
  }
  // ^^^ but the map stopped loading completely ^^^

  map.invalidateSize();

  L.tileLayer('https://api.maptiler.com/maps/streets/{z}/{x}/{y}.png?key=zAlHsNvo6jxv4ENZxW3R', {
    attribution: '<a href="https://www.maptiler.com/copyright/" target="_blank">&copy; MapTiler</a> <a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap contributors</a>'
  }).addTo(map);
}

Что можно добавить / удалить в приведенном выше коде, чтобы исправить ошибку «контейнер контейнера уже инициализирован»?

0
John Beasley

1 ответ

Вы находитесь на правильных строках, но вы должны удалить () карту, прежде чем (повторно) ее инициализировать - и убедитесь, что область действия переменной map указана правильно , Нравится

var map;

...

function initMap(actramp, actimpdel, actexpreceipt, actramplat, actramplng, actreclat, 
actreclng, actdellat, actdellng)
{

    if (map != undefined) map.remove();
    map = L.map('map').setView([actreclat,actreclng], 8);

    ...

}
58591515