leaflet简单例子,绘制多边形

var crs = L.CRS.EPSG900913;
    var map = L.map('map', {
        crs: crs,
        width: '100%',
        height: '100%',
        maxZoom: 17,
        editable: true,
        renderer: new L.SVG()
    }).setView([34, 108.5], 4);

    var options = {
        minNativeZoom: 14,
        minZoom: 2,
        maxZoom: 18
    };

    var google_sat = L.layerGroup([
        L.tileLayer.fallback(Configures.map_services+'/tile/google_sat/{z}/{x}/{y}', options),
        L.tileLayer.fallback(Configures.map_services+'/tile/google_name/{z}/{x}/{y}', options)
    ]);
    var osm_MapQuestOpen = L.tileLayer.fallback(Configures.map_services+'/tile/osm_MapQuestOpen/{z}/{x}/{y}', options);
    L.control.layers({'谷歌影像': google_sat,'osm_MapQuestOpen': osm_MapQuestOpen}).addTo(map);
    map.addLayer(google_sat);

    var drawnItems = new L.FeatureGroup();
    map.addLayer(drawnItems);
    L.drawLocal.draw.toolbar.buttons.polygon = '绘制区域';
    var drawControl = new L.Control.Draw(
        {
            position: 'topleft',
            draw:{
                polyline:false ,
                polygon: true,
                circle: false,
                rectangle:false,
                marker: false
            },
            edit: {
                featureGroup: drawnItems,
                edit:false,
                remove: false
            }
        });
    map.addControl(drawControl);
    L.drawLocal.draw=
    {
        handlers: {
            polygon: {
                tooltip: {
                    start: '鼠标点击绘制多边形',
                    cont: '单击继续绘制',
                    end: '单击起始点或双击完成编辑'
                }
            }
        }
    };
    map.on('draw:created', function(event) {
        //var type = event.layerType;
        var layer = event.layer;
        alert(JSON.stringify(layer.toGeoJSON()));
    });
View Code

 

转载于:https://www.cnblogs.com/Micang/p/6346486.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Leaflet 中实现动态绘制多边形并且在绘制完成后双击闭合多边形,你可以使用 Leaflet.draw 插件。这个插件可以让你很方便地添加编辑工具栏,支持绘制多种几何图形,包括多边形,线条和圆形等。在绘制多边形时,你可以通过设置 `allowIntersection` 选项来控制多边形是否允许交叉。同时,你可以添加一个事件监听器,当用户双击多边形时触发闭合操作。 以下是一个示例代码,你可以将其添加到你的 Leaflet 应用程序中: ``` // 定义绘制控件 var drawControl = new L.Control.Draw({ edit: { featureGroup: drawnItems }, draw: { polyline: false, circle: false, marker: false, polygon: { allowIntersection: false, showArea: true } } }); // 添加绘制控件到地图上 map.addControl(drawControl); // 定义多边形绘制完成事件 map.on(L.Draw.Event.CREATED, function(event) { var layer = event.layer; drawnItems.addLayer(layer); }); // 定义多边形双击事件 map.on('dblclick', function(event) { var layer = event.target; if (layer instanceof L.Polygon) { layer.closePopup(); layer.closeTooltip(); layer._latlngs.push(layer._latlngs[0]); layer.redraw(); } }); ``` 在这个例子中,`drawnItems` 是一个 `L.FeatureGroup` 对象,用于存储绘制多边形。当用户完成绘制一个多边形时,会触发 `L.Draw.Event.CREATED` 事件,你可以在这个事件处理程序中将多边形添加到 `drawnItems` 中。当用户双击一个多边形时,会触发 `dblclick` 事件,你可以在这个事件处理程序中将多边形闭合。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值