Leaflet教程
Leaflet加载百度地图瓦片,但本方法仅支持北半球部份,虽然不支持显示全世界地图,但显示中国及相关区域是正常的。
引用Leaflet的JS和CSS
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.8.0/dist/leaflet.css" />
<script type="text/javascript" src="https://unpkg.com/leaflet@1.8.0/dist/leaflet.js"></script>
引用proj4和proj4leaflet
<script src="https://cdn.bootcss.com/proj4js/2.4.3/proj4.js"></script>
<script src="https://cdn.bootcss.com/proj4leaflet/1.0.1/proj4leaflet.min.js"></script>
百度坐标系代码
实例
L.CRS.Baidu = new L.Proj.CRS('EPSG:900913', '+proj=merc +a=6378206 +b=6356584.314245179 +lat_ts=0.0 +lon_0=0.0 +x_0=0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs', {
resolutions: function () {
var res = [];
for (var i = 0; i < 19; i++) {
res[i] = Math.pow(2, (18 - i))
}
return res;
}(),
origin: [0, 0],
bounds: L.bounds([20037508.342789244, 0], [-20037508.342789244, 20037508.342789244])
});
地图完整例子
加载瓦片图层时的tms属性必须设置为true,所使用的百度瓦片可以去此处下载。百度地图瓦片下载
注意:本例子为百度坐标系,所以设置中心坐标或添加标记等使用的坐标,都必须为百度坐标,否则会有偏移。
如果需要使用WGS84等坐标,请参照 Leaflet百度地图纠偏
实例
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Leaflet百度离线地图</title>
<link rel="stylesheet" href="leaflet/leaflet.css" />
<script type="text/javascript" src="leaflet/leaflet.js"></script>
<script type="text/javascript" src="proj4js/2.4.3/proj4.js"></script>
<script type="text/javascript" src="proj4leaflet/1.0.1/proj4leaflet.min.js"></script>
<style type="text/css">
html, body, #map_container{
width: 100%;
height: 100%;
overflow: hidden;
margin:0;
}
</style>
</head>
<body>
<div id="map_container"></div>
</body>
<script>
L.CRS.Baidu = new L.Proj.CRS('EPSG:900913', '+proj=merc +a=6378206 +b=6356584.314245179 +lat_ts=0.0 +lon_0=0.0 +x_0=0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs', {
resolutions: function () {
var res = [];
for (var i = 0; i < 19; i++) {
res[i] = Math.pow(2, (18 - i))
}
return res;
}(),
origin: [0, 0],
bounds: L.bounds([20037508.342789244, 0], [-20037508.342789244, 20037508.342789244])
});
var map = L.map('map_container', {
crs: L.CRS.Baidu,
center: [121.56990125354358,29.807391894624445].reverse(),
zoom: 17
});
L.tileLayer('tiles/{z}/{x}/{y}.png', {
attribution: 'Leaflet百度离线地图',
tms: true
}).addTo(map);
</script>
</html>
全部教程