第一次使用leaflet

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>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值