Я использую LeafletJS для отображения карт в нескольких местах на моем сайте.
В большинстве случаев все работает нормально, но на одной конкретной странице я получаю странный сбой при рендеринге, который выглядиткак это:
Как видите, карта отображается с вертикальными серыми полосами на каждой границе тайла. Кроме того, если я добавлю маркеры на карту, они также будут отображаться в виде сквоша.
Странно то, что я использую тот же код (то есть тот же файл JS) для рендеринга похожих карт на других страницах без каких-либопроблемы. Я также использую аналогичный код для рендеринга двух других карт на той же странице, опять же без проблем.
Код JS выглядит следующим образом:
(function(L) {
var element = document.querySelector('.details-map');
if (!element) { return; }
var coords = element.getAttribute('data-coords');
var latlng = coords.split(',');
var location = {lat: parseFloat(latlng[0]), lng: parseFloat(latlng[1])};
var zoom = element.getAttribute('data-zoom');
var map = new L.Map(element, {center: location, zoom: zoom, gestureHandling: true});
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© <a href="https://openstreetmap.org">OpenStreetMap</a> contributors',
}).addTo(map);
})(L);
И связанный HTML-код выглядит следующим образом:
<div class="details-map" data-coords="51.5216,-0.71998" data-zoom="14"></div>
Ошибка рендеринга возникает при всех уровнях масштабирования и сохраняется после выполнения таких действий, как map.invalidateSize()
, чтобы вызвать перерисовку.
Может кто-нибудь объяснить, почему я получаю этот глюк икак это исправить? Спасибо.