1.下载leaflet
https://leafletjs.com/download.html
2.下载插件leaflet-draw
http://leaflet.github.io/Leaflet.draw/docs/leaflet-draw-latest.html
3.贴代码
结合的天地图
<html>
<head>
<title>天地图结合</title>
<script src="../static/lib/leaflet/leaflet-src.js"></script>
<link rel="stylesheet" href="../static/lib/leaflet/leaflet.css">
<script src="../static/lib/Leaflet.draw/src/Leaflet.draw.js"></script>
<script src="../static/lib/Leaflet.draw/src/Leaflet.Draw.Event.js"></script>
<link rel="stylesheet" href="../static/lib/Leaflet.draw/src/leaflet.draw.css">
<script src="../static/lib/Leaflet.draw/src/Toolbar.js"></script>
<script src="../static/lib/Leaflet.draw/src/Tooltip.js"></script>
<script src="../static/lib/Leaflet.draw/src/ext/GeometryUtil.js"></script>
<script src="../static/lib/Leaflet.draw/src/ext/LatLngUtil.js"></script>
<script src="../static/lib/Leaflet.draw/src/ext/LineUtil.Intersect.js"></script>
<script src="../static/lib/Leaflet.draw/src/ext/Polygon.Intersect.js"></script>
<script src="../static/lib/Leaflet.draw/src/ext/Polyline.Intersect.js"></script>
<script src="../static/lib/Leaflet.draw/src/ext/TouchEvents.js"></script>
<script src="../static/lib/Leaflet.draw/src/draw/DrawToolbar.js"></script>
<script src="../static/lib/Leaflet.draw/src/draw/handler/Draw.Feature.js"></script>
<script src="../static/lib/Leaflet.draw/src/draw/handler/Draw.SimpleShape.js"></script>
<script src="../static/lib/Leaflet.draw/src/draw/handler/Draw.Polyline.js"></script>
<script src="../static/lib/Leaflet.draw/src/draw/handler/Draw.Marker.js"></script>
<script src="../static/lib/Leaflet.draw/src/draw/handler/Draw.Circle.js"></script>
<script src="../static/lib/Leaflet.draw/src/draw/handler/Draw.CircleMarker.js"></script>
<script src="../static/lib/Leaflet.draw/src/draw/handler/Draw.Polygon.js"></script>
<script src="../static/lib/Leaflet.draw/src/draw/handler/Draw.Rectangle.js"></script>
<script src="../static/lib/Leaflet.draw/src/edit/EditToolbar.js"></script>
<script src="../static/lib/Leaflet.draw/src/edit/handler/EditToolbar.Edit.js"></script>
<script src="../static/lib/Leaflet.draw/src/edit/handler/EditToolbar.Delete.js"></script>
<script src="../static/lib/Leaflet.draw/src/Control.Draw.js"></script>
<script src="../static/lib/Leaflet.draw/src/edit/handler/Edit.Poly.js"></script>
<script src="../static/lib/Leaflet.draw/src/edit/handler/Edit.SimpleShape.js"></script>
<script src="../static/lib/Leaflet.draw/src/edit/handler/Edit.Rectangle.js"></script>
<script src="../static/lib/Leaflet.draw/src/edit/handler/Edit.Marker.js"></script>
<script src="../static/lib/Leaflet.draw/src/edit/handler/Edit.CircleMarker.js"></script>
<script src="../static/lib/Leaflet.draw/src/edit/handler/Edit.Circle.js"></script>
<style>
/* body{
background-color: #f5d107;
} */
</style>
</head>
<body class="">
<div id="map" style="width: 100%; height: 100%; border: 1px solid rgb(204, 204, 204); position: relative;"
class="leaflet-container leaflet-touch leaflet-fade-anim leaflet-touch-zoom leaflet-grab leaflet-touch-drag"
tabindex="0">
</div>
<script src="../static/lib/jquery.min.js"></script>
<script>
//地图对象
let map;
//天地图影像
let tdt = {
img_c: null,
img_w: null,
ter_c: null,
ter_w: null,
vec_c: null,
vec_w: null
}
/*
*获取json
*/
function getJSON() {
$.getJSON("../static/json/Build.json", function (data) {
loadJSON(data, function (layer) {
layer.on('click', function (evt) {
let fea = evt.layer.feature
target = evt.target
evt.sourceTarget.setStyle({
fillColor: '#53e033',
color: "#ff0000"
})
let shuxing = evt.layer.feature.properties
for (var p in shuxing) {//遍历json数组时,这么写p为索引,0,1
// console.log(p);
// console.log(shuxing[p]);
}
})
});
})
$.getJSON("../static/json/Lake.json", function (data) {
loadJSON(data, function (layer) {
layer.on('click', function (evt) {
let fea = evt.layer.feature
target = evt.target
evt.sourceTarget.setStyle({
fillColor: '#53e033',//填充颜
color: "#ff0000"
})
let shuxing = evt.layer.feature.properties
for (var p in shuxing) {//遍历json数组时,这么写p为索引,0,1
// console.log(p);
// console.log(shuxing[p]);
}
})
});
})
$.getJSON("../static/json/River.json", function (data) {
loadJSON(data, function (layer) {
layer.on('click', function (evt) {
let fea = evt.layer.feature
target = evt.target
evt.sourceTarget.setStyle({
fillColor: '#53e033',//填充颜
color: "#ff0000"
})
let shuxing = evt.layer.feature.properties
for (var p in shuxing) {//遍历json数组时,这么写p为索引,0,1
// console.log(p);
// console.log(shuxing[p]);
}
})
});
})
}
/*
*加载json
*/
function loadJSON(data, func) {
//使用leaflet加载json,创建layer
var layer = L.geoJSON(data, {
//遍历feature
onEachFeature: onEachFeature,
//设置样式
style: function (feature) {
return {
//边框颜色
color: feature.properties.color,
//填充颜色
fillColor: feature.properties.fillcolor,
//填充透明度
fillOpacity: 1
};
}
});
//添加到地图,并定位
layer.addTo(map);
func(layer);
//循环遍历每一个feature,给feature添加信息
function onEachFeature(feature, layer) {
// console.log(feature);
}
}
/*
*初始化地图
*/
function initMap() {
map = L.map('map',
{
crs: L.CRS.EPSG4326,
zoomControl: true,
editable: true
}).setView([36.624281, 117.291356], 13);
//影像图
tdt.img_c = L.tileLayer('http://t1.tianditu.com/img_c/wmts?layer=img&style=default&tilematrixset=c&Service=WMTS&Request=GetTile&Version=1.0.0&Format=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}&tk=93724b915d1898d946ca7dc7b765dda5', {
maxZoom: 17,
tileSize: 256,
zoomOffset: 1,
minZoom: 3
});
tdt.img_w = L.tileLayer('http://t{s}.tianditu.gov.cn/img_w/wmts?tk=密钥&SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}', {
maxZoom: 17,
tileSize: 256,
zoomOffset: 1,
zIndex: 5,
minZoom: 3
});
//地形渲染
tdt.ter_c = L.tileLayer('http://t1.tianditu.com/ter_c/wmts?layer=ter&style=default&tilematrixset=c&Service=WMTS&Request=GetTile&Version=1.0.0&Format=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}&tk=93724b915d1898d946ca7dc7b765dda5', {
maxZoom: 17,
tileSize: 256,
zoomOffset: 1,
minZoom: 3
});
tdt.ter_w = L.tileLayer('http://t{s}.tianditu.gov.cn/ter_w/wmts?tk=密钥&SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=ter&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}', {
maxZoom: 17,
tileSize: 256,
zoomOffset: 1,
minZoom: 3
});
//矢量底图
tdt.vec_c = L.tileLayer('http://t1.tianditu.com/vec_c/wmts?layer=vec&style=default&tilematrixset=c&Service=WMTS&Request=GetTile&Version=1.0.0&Format=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}&tk=93724b915d1898d946ca7dc7b765dda5', {
maxZoom: 17,
tileSize: 256,
zoomOffset: 1,
minZoom: 3
});
tdt.vec_w = L.tileLayer('http://t{s}.tianditu.gov.cn/vec_w/wmts?tk=密钥&SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}', {
maxZoom: 17,
tileSize: 256,
zoomOffset: 1,
minZoom: 3
});
//画图工具
var drawnItems = L.featureGroup().addTo(map);
//设置图层源
L.control.layers(
//加载图层
{
'img': tdt.img_c.addTo(map),
'ter': tdt.ter_c.addTo(map),
'vec': tdt.vec_c.addTo(map)
},
//画图工具
{ 'drawlayer': drawnItems },
//是否切换地图源
{ position: 'topleft', collapsed: false }
).addTo(map);
//设置编辑工具
map.addControl(new L.Control.Draw({
//是否编辑
edit: {
featureGroup: drawnItems,
poly: {
allowIntersection: false
}
},
draw: {
polygon: {
allowIntersection: false,
showArea: true
}
}
}));
//设置finish等工具按钮
map.on(L.Draw.Event.CREATED, function (event) {
var layer = event.layer;
drawnItems.addLayer(layer);
});
}
/*
*初始化
*/
function init() {
//初始化地图
initMap();
//加载json
getJSON();
}
window.addEventListener('load', init, false);
</script>
</body>
</html>