• Leaflet中使用Leaflet.Pin插件实现图层要素编辑效果


    场景

    Leaflet快速入门与加载OSM显示地图:

    https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/122290880

    前面所引用的leaflet.js等都是线上url。下面借助于本地leaflet.js以及相应插件实现图层要素编辑效果。

    此插件依赖于Leaflet.draw

    Leaflet.draw

    https://github.com/Leaflet/Leaflet.draw

    添加图层要素

    删除图层要素

    编辑图层要素

     

    注:

    博客:
    https://blog.csdn.net/badao_liumang_qizhi
    关注公众号
    霸道的程序猿
    获取编程相关电子书、教程推送与免费下载。

    实现

    1、插件地址

    https://github.com/kklimczak/Leaflet.Pin

    2、在线示例地址

    https://kklimczak.github.io/Leaflet.Pin/

    3、在线示例地址中右键查看网页源代码

    <!DOCTYPE html>
    <head>
        <meta charset="utf-8"/>
        <title>Leaflet.Pin Example</title>
        <!--[if lt IE 9]>
        <script src=" href='http://html5shiv.googlecode.com/svn/trunk/html5.js"> href='http://html5shiv.googlecode.com/svn/trunk/html5.js"> href='http://html5shiv.googlecode.com/svn/trunk/html5.js"> href='http://html5shiv.googlecode.com/svn/trunk/html5.js">http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
       <![endif]--><BR>   <linkhref='https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,700' rel='stylesheet' type='text/css'>
        <link rel="stylesheet" href="css/style.css" charset="utf-8">
        <link rel="stylesheet" href="css/leaflet.pin.css">
        <link rel="stylesheet" href="leaflet/css/leaflet.css" charset="utf-8">
        <link rel="stylesheet" href="leaflet/css/leaflet.draw.css" charset="utf-8">
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css">
        <script src="leaflet/js/leaflet.js" charset="utf-8"></script>
        <script src="leaflet/js/leaflet.draw.js" charset="utf-8"></script>
        <script src="leaflet/js/leaflet.geometryutil.js" charset="utf-8"></script>
        <script src="vendor/js/lodash.min.js"></script>
        <script src="js/leaflet.pin.js" charset="utf-8"></script>
    </head>
    <body>
    <div class="header row">
        <h1><b>Leaflet.Pin</b>
            <small>Draw and edit with pin.</small>
        </h1>
    </div>
    <div id="map"></div>
    <div class="footer row">
        <a href="konradklimczak.plkonradklimczak.plkonradklimczak.plkonradklimczak.plkonradklimczak.plkonradklimczak.plkonradklimczak.plhttp://konradklimczak.pl">konradklimczak.pl</a>
        <span> | Visit my: </span>
        <a href="<i'" designtimesp="22793">http://github.com/kklimczak"><i class="fa fa-github fa-lg"></i></a>
    </div>
    <script src="js/default.js" charset="utf-8"></script>
    <script src="js/main.js" charset="utf-8"></script>
    </body>
    </html>

    4、依次点击源码中所用到的文件,并依次另存为到本地,在本地html中全部引入和修改路径。

    5、这些文件中有些图标文件仍然需要

    部分照片可以从这里获取

    这里提供一下

     

     

    leaflet.js中默认使用的marker的图标和其阴影的图标可以将在线示例网页中右键另存为里面去找

    这里也提供一下

     

    将这两个图标放在leaflet.js所在目录下新建images目录下

     

    6、html完整示例代码

    <!doctype html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <title>leaflet实现图层要素编辑</title>
        <link rel="stylesheet" href="./css/leaflet.css" />
        <link rel="stylesheet" href="./css/leaflet.draw.css" />
        <link rel="stylesheet" href="./css/font-awesome.min.css" />
        <link rel="stylesheet" href="./css/style.css" />
        <link rel="stylesheet" href="./css/leaflet.pin.css" />
        <style>
    
        </style>
    </head>
    
    <body>
        <div id="map"></div>
        <script type="text/javascript" src="./js/leaflet.js"></script>
        <script type="text/javascript" src="./js/leaflet.draw.js"></script>
        <script type="text/javascript" src="./js/leaflet.geometryutil.js"></script>
        <script type="text/javascript" src="./js/lodash.min.js"></script>
        <script type="text/javascript" src="./js/leaflet.pin.js"></script>
        <script type="text/javascript" src="./js/default.js"></script>
        <script type="text/javascript">
            var map = L.map('map', {
                pin: true,
                pinCircle: true,
                pinControl: true,
                guideLayers: []
            });
    
            var osmUrl = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
            var osm = new L.TileLayer(osmUrl, {
                minZoom: 8,
                maxZoom: 16,
            });
    
            map.setView(new L.LatLng(36.09, 120.35), 12);
            map.addLayer(osm);
    
            var drawnItems = new L.FeatureGroup();
            map.addLayer(drawnItems);
    
            var drawControl = new L.Control.Draw({
                draw: {
                    polyline: {
                        distance: 20
                    },
                    polygon: {
                        distance: 25
                    },
                    marker: {
                        distance: 25
                    },
                    rectangle: {},
                    circle: {}
                },
                edit: {
                    featureGroup: drawnItems
                }
            });
    
            L.geoJson(loadJson(), {
                onEachFeature: function (feature, layer) {
                    if (feature.geometry.type == "LineString") {
                        layer.setStyle({
                            color: 'purple',
                            weight: 5
                        });
                    }
                    drawnItems.addLayer(layer);
                }
            });
    
            map.addGuideLayer(drawnItems);
            map.removeGuideLayer(drawnItems);
    
    
            map.addControl(drawControl);
    
            map.on('draw:created', function (e) {
                var layer = e.layer;
                drawnItems.addLayer(layer);
                //console.log(JSON.stringify(drawnItems.toGeoJSON()));
            });
    
            map.on('mousemove', function (e) {
                //console.log(e.latlng);
            });
        </script>
    </body>
    
    </html>
    博客园: https://www.cnblogs.com/badaoliumangqizhi/ 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。
  • 相关阅读:
    绑定class -vue
    二叉树按层打印,并且按层换行的方法
    curl相关知识
    python创建简单的http服务器
    有关rides数据库的想法
    java模拟实现有序表操作
    php静态方法
    php关闭浏览器不终止运行
    php读取图片以二进制输出
    借用face++人脸识别,来识别年龄
  • 原文地址:https://www.cnblogs.com/badaoliumangqizhi/p/15796389.html
Copyright © 2020-2023  润新知