1 <!DOCTYPE html>
2 <html lang="zh">
3 <head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <meta http-equiv="X-UA-Compatible" content="ie=edge">
7 <link rel="stylesheet" type="text/css" href="leaflet/leaflet.css" />
8 <title></title>
9 <style type="text/css">
10 body {
11 margin: 0;
12 }
13
14 #mapid {
15 height: 500px;
16 }
17 </style>
18 </head>
19 <body>
20 <div id="map-container">
21 <div>
22 <button id="first-btn">第一层</button>
23 <button id="second-btn">第二层</button>
24 </div>
25 <div id="mapid"></div>
26 </div>
27
28 <script type="text/javascript" src="leaflet/leaflet.js"></script>
29
30 <script type="text/javascript">
31 const mymapOptions = {
32 // 地图中心
33 center: [51.505, -0.09],
34 // 地图的最小缩放级别
35 minZoom: 11,
36 // 初始化时的缩放等级
37 zoom: 13,
38 // 地图的最大缩放级别
39 maxZoom: 15,
40 // 强制让地图的缩放级别始终为这个值的倍数
41 zoomSnap: 1,
42 // 版权控件添加到地图中(即水印)
43 attributionControl: false,
44 // 是否显示zoom 缩放控件,默认是true
45 zoomControl: true,
46 }
47
48 const mymap = L.map('mapid', mymapOptions);
49
50 //声明图层组,存储城市标记marker
51 var cities = L.layerGroup();
52
53 //声明两个城市marker并添加进图层组
54 const linyi = L.marker([51.505, -0.09]).bindPopup('这里属于青岛').addTo(cities);
55 const qingdao = L.marker([51.505, -0.19]).bindPopup('这里属于临沂').addTo(cities);
56
57 const imageUrl = 'leaflet/images/b1-floor1-full-h.png';
58 // 获取顶部左边的边界
59 const northEast = L.latLng(mymap.getBounds()._northEast);
60 // 获取底部右边的边界
61 const southWest = L.latLng(mymap.getBounds()._southWest);
62
63 const imageBounds = L.latLngBounds(northEast, southWest);
64 const imageOverlay = L.imageOverlay(imageUrl, imageBounds).addTo(mymap);
65
66 cities.addTo(mymap)
67
68
69 const firstBtn = document.querySelector('#first-btn')
70 const secondBtn = document.querySelector('#second-btn')
71
72 firstBtn.addEventListener('click', (ev) => {
73 cities.clearLayers()
74 const linyi = L.marker([51.505, -0.09]).bindPopup('这里属于青岛').addTo(cities);
75 const qingdao = L.marker([51.505, -0.19]).bindPopup('这里属于临沂').addTo(cities);
76 imageOverlay.setUrl('leaflet/images/2.PNG')
77 })
78
79 secondBtn.addEventListener('click', (ev) => {
80 cities.clearLayers()
81 const qingdao = L.marker([51.505, -0.19]);
82 cities.addLayer(qingdao)
83 imageOverlay.setUrl('leaflet/images/b1-floor1-full-h.png')
84 })
85
86 </script>
87
88 </body>
89 </html>