zoukankan      html  css  js  c++  java
  • arcgis jsapi接口入门系列(7):鼠标在地图画线

    初始化,每个map执行一次就行

            drawPolylineInit: function () {
                //画几何对象初始化
    
                //新建一个图形图层用于存放画图过程中的图形
                let layer = new this.apiInstance.GraphicsLayer({
                    //空间参考,一般要跟地图的一样
                    spatialReference: this.mapView.spatialReference,
                });
                //图层添加到地图
                //PS:GraphicsLayer也是图层之一,因此也支持通用的图层功能
                this.map.add(layer);
    
                //new SketchViewModel,此对象用于画图
                this.sketchPolyline = new this.apiInstance.SketchViewModel({
                    //mapView
                    view: this.mapView,
                    //一个图形图层
                    layer: layer,
                    //分别是点线面的样式,分别用于画点线面时,理论上只要设置要画的几何类型即可
                    pointSymbol: {
                        type: "simple-marker",  // autocasts as new SimpleMarkerSymbol()
                        style: "square",
                        color: "red",
                        size: "16px",
                        outline: {  // autocasts as new SimpleLineSymbol()
                            color: [255, 255, 0],
                             3
                        }
                    },
                    polylineSymbol: {
                        type: "simple-line",  // autocasts as new SimpleMarkerSymbol()
                        color: "#8A2BE2",
                         "4",
                        style: "dash"
                    },
                    polygonSymbol: {
                        type: "simple-fill",  // autocasts as new SimpleMarkerSymbol()
                        color: "rgba(138,43,226, 0.8)",
                        style: "solid",
                        outline: { // autocasts as new SimpleLineSymbol()
                            color: "white",
                             1
                        }
                    }
                });
    
                //绑定create-complete事件,新增画图完成时会触发
                this.sketchPolyline.on("create-complete", function (event) {
                    //画的几何对象类型,值同开始画的create方法的参数1
                    let drawGeometryType = event.tool;
                    //画的结果的几何对象
                    //PS:画完后SketchViewModel创建的图形会消失,因此如果要在画完后还要显示在地图上,就要另外再编码画在地图上,SketchViewModel只会提供画的结果的几何对象
                    let geometry = event.geometry;
    
                    //样式
                    //PS:其他高级样式配置请看样式的章节
                    let style = {
                        //线颜色
                        color: "dodgerblue",
                        //线宽
                         3,
                        //线样式
                        style: "solid"
                    };
    
                    let graphic = mapUtil.geometry.polylineToPolylineGraphic(this.apiInstance, geometry, style, this.mapView.spatialReference, null);
    
                    //把图形添加到地图的图形集合
                    //PS:图形要在地图上显示,可以添加到两种地方。一是mapView的graphics,这是地图的图形容器。第二是创建图形图层(GraphicsLayer),然后把图形加入到图层里
                    this.mapView.graphics.add(graphic);
                }.bind(this));
    
                //绑定update-complete事件,编辑画图完成时会触发
                this.sketchPolyline.on("update-complete", function (event) {
                    //画的结果的几何对象
                    //PS:画完后SketchViewModel创建的图形会消失,因此如果要在画完后还要显示在地图上,就要另外再编码画在地图上,SketchViewModel只会提供画的结果的几何对象
                    let geometry = event.geometry;
    
                    //后续代码略。。。
                }.bind(this));
            },

    开始画新的线

            drawPolyline: function () {
                //开始画线
                //参数1:画的几何类型,有值:point=点 | multipoint=多点 | polyline=线 | polygon=面 | rectangle=矩形 | circle=原型
                this.sketchPolyline.create("polyline");
            },

    开始编辑线

            drawEditPolyline: function () {
                //编辑线
                //做一条测试的线,注意是图形而不是几何对象
                //PS:编辑时样式是用图形的,而不是SketchViewModel的
                let wkt = "LINESTRING(113.545949 22.24015749,113.56989 22.24916,113.55324 22.220588)";
    
                //PS:编辑时创建图形不用传style,编辑的样式会用SketchViewModel的
                let graphic = mapUtil.geometry.wktToPolylineGraphic(this.apiInstance, wkt, null, this.mapView.spatialReference, null);
    
                //开始编辑
                //PS:其他几何类型的编辑都一样,因此其他类型编辑省略
                this.sketchPolyline.update(graphic);
            },
  • 相关阅读:
    大型网站技术架构(八)--网站的安全架构(转)
    大型网站技术架构(七)--网站的可扩展性架构(转)
    大型网站技术架构(六)--网站的伸缩性架构(转)
    大型网站技术架构(五)--网站高可用架构(转)
    大型网站技术架构(四)--网站的高性能架构(转)
    HTML中的空元素
    jetbrains 全家桶,Pycharm激活码,PHPStorm激活码,WebStorm激活码,Goland激活码,Clion激活码,intellij idea激活码(亲测可用)
    legend3---22、通过html,可以使php、vue、jquery、js达成完美的配合
    IlluminateDatabaseQueryException : SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes
    template cannot be keyed. Place the key on real elements instead.
  • 原文地址:https://www.cnblogs.com/cannel/p/11077991.html
Copyright © 2011-2022 走看看