#javascript #php #html #leaflet
#javascript #php #HTML #листовка
Вопрос:
Я пытаюсь использовать карту, но, похоже, она не работает, она просто показывает пустое пустое пространство. Я несколько дней назад сбросил настройки своего компьютера, поэтому я не уверен, что на моем компьютере чего-то не хватает или мой код неверен, но вот он:
header.php:
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="css/menu_style.css">
<link rel="stylesheet" href="css/index_style.css">
<link rel="stylesheet" href="font-awesome/css/font-awesome.min.css">
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css"
integrity="sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A=="
crossorigin=""/>
<link rel="stylesheet" href="css/main.css">
</head>
main.css:
div.mapa{
height: 420px;
}
footer.php:
</footer>
<script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js"
integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA=="
crossorigin=""></script>
<script src="js/main.js"></script>
</body>
</html>
main.js:
(function(){
"use strict";
document.addEventListener('DOMContentLoaded',function(){
var mapa = document.getElementById('mapa');
if(mapa) {
var map = L.map('mapa').setView([-12.088507, -76.995052], 16);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: 'amp;copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
L.marker([-12.088507, -76.995052]).addTo(map)
.bindTooltip('Paris WebCamp 2020<br> Boletos disponibles.')
.openTooltip();
}
});
});
index.php:
<div id="mapa" class="mapa"></div>
После всего… он не отображается, это просто пустое место в моей сети
Комментарии:
1. Кстати, вы должны использовать
load
событие, чтобы убедиться, что листовка загружена. Возможно, она уже находится в вашем кэше.2. @StackSlave: поскольку сценарий листовки не загружен с атрибутом async (ни defer), он должен блокировать остальную часть страницы, в частности сценарий приложения здесь.
Ответ №1:
Ваш IIFE никогда не вызывается:
(function () {
// some code...
}); // Function is expressed but not invoked
Должно быть:
(function () {
// some code...
})(); // Make sure to add the final parenthesis pair
Просто для полноты, он также работает с вызывающей парой скобок сразу после фигурных скобок:
(function () {
// some code...
}());