1. 实现思路
- 分别为地图对象绑定缩放、平移监听事件;
- 监听事件触发后依次为地图对象设置视图,就是将触发事件的地图视图设置到其他地图对象
2. 完整代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>地图分屏联动</title>
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css"
integrity="sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A=="
crossorigin=""/>
<script src="https://unpkg.com/[email protected]/dist/leaflet.js"
integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA=="
crossorigin=""></script>
<style>
body,
html {
height: 100%;
}
#div1 {
width: 50%;
height: 100%;
float: right;
}
#div2 {
float: left;
width: 50%;
height: 100%;
}
</style>
</head>
<body>
<div id="div1"></div>
<div id="div2"></div>
<script>
var map1 = L.map("div1").setView([38, 114], 12);
var map2 = L.map('div2').setView([38, 114], 12);
var layer1 = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png');
var layer2 = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png');
layer1.addTo(map1);
layer2.addTo(map2);
var maps = [map1, map2];
function mapLink(e) {
debugger;
var _this = this;
maps.map(function (t) {
t.setView(_this.getCenter(), _this.getZoom())
})
}
maps.map(function (t) {
t.on({
drag: mapLink, zoom: mapLink })
})
</script>
</body>
</html>