gpt4 book ai didi

javascript - 使用延迟加载图像的 Leaflet bindpopup()

转载 作者:行者123 更新时间:2023-11-30 20:26:44 26 4
gpt4 key购买 nike

我正在使用传单在 map 上放置一些标记。我已经设置好,点击一个标记,将打开一个显示图像的弹出窗口。这是一个简短的例子:

var map = L.map('map')
.addLayer(tile)
.setView([initLat, initLon], initZoom);

var m = L.marker([lat, lon])
.bindPopup('<img src="1.jpg"/>')
.addTo(map);

我的目标是使用延迟加载来加载这些图像(上例中的“1.jpg”),因此它只会在我单击标记时加载。

有人知道怎么做吗?

谢谢!

最佳答案

您可以在弹出窗口打开时设置弹出窗口的内容。

让我们创建一个带有 lazyload 选项且没有内容的自定义弹出窗口:

var m = L.marker([0, 0])
.bindPopup(L.popup({
lazyload: '<img src="1.jpg"/>'
}))
.addTo(map);

然后您可以设置一个全局处理程序来在需要时填充您的弹出窗口:

map.on('popupopen', function(e) {
var popen = e.popup;
if (popen.options.lazyload) {
popen.setContent(popen.options.lazyload);
}
});

还有一个演示:

var map = L.map('map', {
center: [0, 0],
zoom: 1
});

var m = L.marker([-30, 0])
.bindPopup(L.popup({
lazyload: '<img src="/image/shfxy.jpg?s=32&g=1" />'
}))
.addTo(map);

map.on('popupopen', function(e) {
var popen = e.popup;
if (popen.options.lazyload) {
popen.setContent(popen.options.lazyload);
}
});
html, body {
height: 100%;
margin: 0;
}
#map {
width: 100%;
height: 150px;
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.3.1/leaflet.css"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.3.1/leaflet.js"></script>

<div id='map'></div>

关于javascript - 使用延迟加载图像的 Leaflet bindpopup(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50826812/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com