Leaflet.js 地图加载不正确
Leaflet.js map not loading properly
我有一个弹出式容器,里面有传单地图。主页上的按钮激活获取用户位置并在弹出窗口上绘制地图的功能。然而,当弹出窗口出现时,地图只加载了一部分,并且没有关注我所在的位置。当我打开控制台时,它会自动调整并且非常完美。我看过有类似问题的帖子,但它们 link 到 github 页面不再存在。
这是我的地理位置文件
function getLocation() {
navigator.geolocation.getCurrentPosition(position => {
let latitude = position.coords.latitude;
let longitude = position.coords.longitude;
var map = L.map('map').setView([latitude, longitude], 12);
L.tileLayer('https://api.maptiler.com/maps/streets/{z}/{x}/{y}.png?key=sJdX2R69yUO7n4qEW4gl', {
attribution: '<a href="https://www.maptiler.com/copyright/" target="_blank">© MapTiler</a> <a href="https://www.openstreetmap.org/copyright" target="_blank">© OpenStreetMap contributors</a>' ,
}).addTo(map);
console.log(latitude, longitude);
}, error => {
console.log(error.code);
},{
enableHighAccuracy: true
});
}
这是绘制地图的地方
<div class="form-popup" id="hackContainer">
<div id="warning"></div>
<script src="js/geolocation.js"></script>
<div id="map"></div>
这是触发功能的按钮
<button type="button" class="btn btn-dark" onclick="getLocation()">Give Location</button>
您必须调用 map.invalidateSize();
,才能重新渲染地图大小。
navigator.geolocation.getCurrentPosition(position => {
let latitude = position.coords.latitude;
let longitude = position.coords.longitude;
var map = L.map('map').setView([latitude, longitude], 12);
L.tileLayer('https://api.maptiler.com/maps/streets/{z}/{x}/{y}.png?key=sJdX2R69yUO7n4qEW4gl', {
attribution: '<a href="https://www.maptiler.com/copyright/" target="_blank">© MapTiler</a> <a href="https://www.openstreetmap.org/copyright" target="_blank">© OpenStreetMap contributors</a>' ,
}).addTo(map);
console.log(latitude, longitude);
map.invalidateSize();
}
我有一个弹出式容器,里面有传单地图。主页上的按钮激活获取用户位置并在弹出窗口上绘制地图的功能。然而,当弹出窗口出现时,地图只加载了一部分,并且没有关注我所在的位置。当我打开控制台时,它会自动调整并且非常完美。我看过有类似问题的帖子,但它们 link 到 github 页面不再存在。
这是我的地理位置文件
function getLocation() {
navigator.geolocation.getCurrentPosition(position => {
let latitude = position.coords.latitude;
let longitude = position.coords.longitude;
var map = L.map('map').setView([latitude, longitude], 12);
L.tileLayer('https://api.maptiler.com/maps/streets/{z}/{x}/{y}.png?key=sJdX2R69yUO7n4qEW4gl', {
attribution: '<a href="https://www.maptiler.com/copyright/" target="_blank">© MapTiler</a> <a href="https://www.openstreetmap.org/copyright" target="_blank">© OpenStreetMap contributors</a>' ,
}).addTo(map);
console.log(latitude, longitude);
}, error => {
console.log(error.code);
},{
enableHighAccuracy: true
});
}
这是绘制地图的地方
<div class="form-popup" id="hackContainer">
<div id="warning"></div>
<script src="js/geolocation.js"></script>
<div id="map"></div>
这是触发功能的按钮
<button type="button" class="btn btn-dark" onclick="getLocation()">Give Location</button>
您必须调用 map.invalidateSize();
,才能重新渲染地图大小。
navigator.geolocation.getCurrentPosition(position => {
let latitude = position.coords.latitude;
let longitude = position.coords.longitude;
var map = L.map('map').setView([latitude, longitude], 12);
L.tileLayer('https://api.maptiler.com/maps/streets/{z}/{x}/{y}.png?key=sJdX2R69yUO7n4qEW4gl', {
attribution: '<a href="https://www.maptiler.com/copyright/" target="_blank">© MapTiler</a> <a href="https://www.openstreetmap.org/copyright" target="_blank">© OpenStreetMap contributors</a>' ,
}).addTo(map);
console.log(latitude, longitude);
map.invalidateSize();
}