地圖如果需要加載圖片可使用 ImageOverlay 這個功能
參數介紹:
L.imageOverlay(<String> imageUrl, <LatLngBounds> bounds, <ImageOverlay options> options?)
imageUrl : 圖片的路徑
LatLngBounds : 圖片顯示的位置
options : 關於圖片的狀態設定
const map = L.map(mapContainer.value).setView([37.8, -96], 4);
L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", {
maxZoom: 19,
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>',
}).addTo(map);
底圖顯示:
<script setup>
const imageUrl = "https://maps.lib.utexas.edu/maps/historical/newark_nj_1922.jpg";
const latLngBounds = L.latLngBounds([
[40.799311, -74.118464],
[40.68202047785919, -74.33],
]);
</script>
L.imageOverlay(imageUrl, latLngBounds, {
opacity: 0.8,
errorOverlayUrl: errorOverlayUrl,
alt: "Image of Newark, N.J. in 1922. Source: The University of Texas at Austin, UT Libraries Map Collection.",
interactive: true,
}).addTo(map);
map.fitBounds(latLngBounds);
例如一開始 L.imageOverlay 的 interactive 設定為 false,並且監聽 click 事件,當點擊圖片透過 bindPopup 出現我是圖片的訊息,但因為 interactive 設定為 false 的關係,圖片不會觸發 click 事件
const imageOverlay = L.imageOverlay(imageUrl, latLngBounds, {
interactive: false,
}).addTo(map);
imageOverlay.on("click", () => {
imageOverlay.bindPopup("我是圖片");
});
map.fitBounds(latLngBounds);
當 interactive 設定為 true 時就能在圖片上顯示訊息
const imageOverlay = L.imageOverlay(imageUrl, latLngBounds, {
interactive: true,
}).addTo(map);
imageOverlay.on("click", () => {
imageOverlay.bindPopup("我是圖片");
});
map.fitBounds(latLngBounds);
L.rectangle 可以在地圖上繪製矩行
以下用 L.rectangle 在剛剛地圖上的圖片畫一個矩形設定顏色將圖片框起來
L.rectangle(<LatLngBounds> latLngBounds, <Polyline options> options?)
LatLngBounds : 設定矩形顯示的座標
Polyline options : 可設定矩形的樣式
const latLngBounds = L.latLngBounds([
[40.799311, -74.118464],
[40.68202047785919, -74.33],
]);
const imageOverlay = L.imageOverlay(imageUrl, latLngBounds, {
opacity: 1,
errorOverlayUrl: errorOverlayUrl,
alt: altText,
interactive: true,
}).addTo(map);
L.rectangle(latLngBounds, {
weight: 1,
color: "#ff7800",
fillColor: "3388ff",
}).addTo(map);
weight : 邊框的寬度,預設為3
color : 邊框顏色,預設水藍色
fillColor : 矩形填充色,預設會使用color的顏色