arcgis for js 借助画图工具进行画图

既然是地图,那也是可以在上面写写画画的啦,所以,我又去研究了一下那个画图工具,画点,画面,画线等;
下面贴下代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>demo08</title>
    <link rel="stylesheet" type="text/css" href="./arcgis_js_api/library/3.17/3.17/dijit/themes/tundra/tundra.css"/>
    <link rel="stylesheet" type="text/css" href="./arcgis_js_api/library/3.17/3.17/esri/css/esri.css" />
</head>
<body>
    <div id="mapDiv" style="width:100%; height:600px; border:1px solid #000;"></div>
    <button>绘制点</button>
    <button>绘制折线</button>
    <button>绘制面</button>
    <button>徒手线</button>
    <button>徒手面</button>
    <script type="text/javascript" src="./arcgis_js_api/library/3.17/3.17/init.js"></script>
    <script>
        require([
            "esri/map",
            "dojo/dom",
            "dojo/on",
            "dojo/query",
            "esri/toolbars/draw",
            "esri/symbols/SimpleLineSymbol",
            "esri/graphic",
            "esri/symbols/SimpleMarkerSymbol",
            "esri/symbols/SimpleFillSymbol",
            "dojo/domReady!"
        ],function(Map,dom,on,query,Draw,SimpleLineSymbol,Graphic,SimpleMarkerSymbol,SimpleFillSymbol){
            var map = new Map("mapDiv",{
                logo:false,
                basemap:"topo"
            })
            var toolbar = new Draw(map,{showTooltips:true});
            console.log(toolbar)
            //线符号
            var lineSymbol = new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new dojo.Color([255, 0, 0]),3);
            //点符号
            var marker= new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE,10, lineSymbol, new dojo.Color([255, 0, 0]));
            //面符号
            var fill= new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, lineSymbol,  new dojo.Color([255, 0, 0,0.3]));
            //给绘图工具绑定绘图完成事件
            on(toolbar,"draw-complete",function(result){
                //获得几何图形
                var geometry = result.geometry;
                //获得形状类型
                var type = geometry.type;
                //声明图形对象
                var graphic;
                switch (type){
                    case "point":
                    graphic= new Graphic(geometry, marker);
                    break;
                    case "polyline":
                    graphic= new Graphic(geometry, lineSymbol);
                    break;
                    case "polygon":
                    graphic= new Graphic(geometry, fill);
                    break;
                }
                map.graphics.add(graphic);
                //关掉绘图工具
                toolbar.deactivate();
            })
            //给每一个button绑定相应的事件(激活绘图工具)
            query("button").on("click",function(event){
                var value = this.innerHTML;
                switch(value){
                    case "绘制点":
                    //激活绘图工具(画点)
                    toolbar.activate(Draw.POINT,{
                        showTooltips:true
                    })
                    break;
                    case "绘制折线":
                    //激活绘图工具(画折线)
                    toolbar.activate(Draw.POLYLINE,{
                        showTooltips:true
                    })
                    break;
                    case "绘制面":
                    //激活绘图工具(绘制面)
                    toolbar.activate(Draw.POLYGON,{
                        showTooltips:true
                    })
                    break;
                    case "徒手线":
                    //激活绘图工具(徒手线)
                    toolbar.activate(Draw.FREEHAND_POLYLINE,{
                        showTooltips:true
                    })
                    break;
                    case "徒手面":
                    //激活绘图工具(徒手面)
                    toolbar.activate(Draw.FREEHAND_POLYGON,{
                        showTooltips:true
                    })
                    break;
                }
            })
        })
    </script>
</body>
</html>

我觉得代码里面已经解释的很详细了,下面看下效果

绘制点:
这里写图片描述
绘制折线:
这里写图片描述
绘制面:
这里写图片描述
徒手线:
这里写图片描述
徒手面:
这里写图片描述

ok,大家可以去玩玩这个功能了,哈哈

猜你喜欢

转载自blog.csdn.net/zhaoxiang66/article/details/80620164