Leaflet学习之动态绘制图形

1,动态绘制圆




    
    first esri-leaflet
    
    
    
    



效果如下:

Leaflet学习之动态绘制图形_第1张图片

2,动态绘线

动态绘线主要涉及到三个事件:click,dbclick,mousemove。click确定线的折点,dbclick确定线的终点,mousemove绘制鼠标移动过程中图形的变化。

    var points=[]
    var lines=new L.polyline(points)
    var tempLines=new L.polyline([])
    map.on('click', onClick);    //点击地图
    map.on('dblclick',onDoubleClick);


    //map.off(....) 关闭该事件

    function onClick(e)
    {

        points.push([e.latlng.lat,e.latlng.lng])
        lines.addLatLng(e.latlng)
        map.addLayer(lines)
        map.addLayer(L.circle(e.latlng,{color:'#ff0000',fillColor:'ff0000',fillOpacity:1}))
        map.on('mousemove',onMove)//双击地图

    }
    function onMove(e) {
        if(points.length>0) {
            ls=[points[points.length-1],[e.latlng.lat,e.latlng.lng]]
            tempLines.setLatLngs(ls)
            map.addLayer(tempLines)
        }
    }

    function onDoubleClick(e)
    {
        L.polyline(points).addTo(map)
        points=[]
        lines=new L.polyline(points)
        map.off('mousemove')
    }

效果如下:

Leaflet学习之动态绘制图形_第2张图片

3,动态绘制多边形

var points=[]
    var lines=new L.polyline([])
    var tempLines=new L.polyline([],{dashArray:5})
    
    map.on('click', onClick);    //点击地图
    map.on('dblclick',onDoubleClick);
    map.on('mousemove',onMove)//双击地图

    //map.off(....) 关闭该事件

    function onClick(e)
    {

        points.push([e.latlng.lat,e.latlng.lng])
        lines.addLatLng(e.latlng)
        map.addLayer(tempLines)
        map.addLayer(lines)
        map.addLayer(L.circle(e.latlng,{color:'#ff0000',fillColor:'ff0000',fillOpacity:1}))

    }
    function onMove(e) {
        if(points.length>0) {
            ls=[points[points.length-1],[e.latlng.lat,e.latlng.lng],points[0]]
            tempLines.setLatLngs(ls)
            // map.addLayer(tempLines)
        }
    }

    function onDoubleClick(e)
    {
        L.polygon(points).addTo(map)
        points=[]
        //map.removeLayer(tempLines)
        //tempLines.remove()
        lines.remove()
        tempLines.remove()
        lines=new L.polyline([])
    }

效果图如下所示:

Leaflet学习之动态绘制图形_第3张图片

 

参考文章:

Leaflet学习之路二——在地图上绘制要素(点、线、多边形)

https://blog.csdn.net/xtfge0915/article/details/80260493

Leaflet学习之路五——动态绘制图形(点、线、圆、多边形)

https://blog.csdn.net/xtfge0915/article/details/80275094#_11

你可能感兴趣的:(Leaflet)