const POINT_STYLE = { Angle: 0, Color: 11, Space: 0, SymHeight: 6, SymID: 31, SymWidth: 6}class Point { static add({ position, attr, service, layer }) { /* 1、几何信息 */ //创建一个点形状,描述点形状的几何信息 var gpoint = new Zondy.Object.GPoint(position[0], position[1]); //createPoint(); //设置当前点要素的几何信息 var fGeom = new Zondy.Object.FeatureGeometry({ PntGeom: [gpoint] }); /* 2、图形参数 */ //描述点要素的符号参数信息 var pointInfo = new Zondy.Object.CPointInfo(POINT_STYLE); //设置当前点要素的图形参数信息 var webGraphicInfo = new Zondy.Object.WebGraphicsInfo({ InfoType: 1, PntInfo: pointInfo }); /* 3、属性 */ //设置添加点要素的属性信息 var attValue = attr.map(item => item.value); /* 4、几何+图形+属性 构建要素*/ //创建一个要素 var feature = new Zondy.Object.Feature({ fGeom: fGeom, GraphicInfo: webGraphicInfo, AttValue: attValue }); //设置要素为点要素 feature.setFType(1); //创建一个要素数据集 /* 5、创建要素集添加要素 */ var featureSet = new Zondy.Object.FeatureSet(); //设置属性结构 var cAttStruct = new Zondy.Object.CAttStruct({ FldName: attr.map(item => item.key), FldNumber: attr.length, FldType: attr.map(item => item.type) }); featureSet.AttStruct = cAttStruct; //添加要素到要素数据集 featureSet.addFeature(feature); /* 6、调用中地服务,添加要素 */ //创建一个编辑服务类 var editService = new Zondy.Service.EditDocFeature(service.name, service.layerId, { ip: "localhost", port: "6163" //访问IGServer的端口号,.net版为6163,Java版为8089 }); //执行添加点要素功能 editService.add(featureSet, this.onPntSuccess(layer)); } static onPntSuccess(layer) { return function (data) { if (data.succeed) { alert("操作点要素成功!"); layer.refresh(); } else { alert("操作点要素失败!"); } } } static query({ position, service, callback }) { /* 1、创建一个用于查询的点 */ //创建一个用于查询的点形状 let pointObj = new Zondy.Object.Point2D(position[0], position[1]); //设置查询点的搜索半径 pointObj.nearDis = 1; //2、初始化查询结构对象,设置查询结构包含几何信息 var queryStruct = new Zondy.Service.QueryFeatureStruct(); //是否包含几何图形信息 queryStruct.IncludeGeometry = true; //是否包含属性信息 queryStruct.IncludeAttribute = true; //是否包含图形显示参数 queryStruct.IncludeWebGraphic = true; //3、指定查询规则 var rule = new Zondy.Service.QueryFeatureRule({ //是否将要素的可见性计算在内 EnableDisplayCondition: false, //是否完全包含 MustInside: false, //是否仅比较要素的外包矩形 CompareRectOnly: false, //是否相交 Intersect: true }); //4、实例化查询参数对象 var queryParam = new Zondy.Service.QueryParameter({ geometry: pointObj, resultFormat: "json", struct: queryStruct, rule: rule }); /* 5、查询服务 */ //实例化地图文档查询服务对象 var queryService = new Zondy.Service.QueryDocFeature(queryParam, service.name, service.layerId, { ip: "localhost", port: "6163" //访问IGServer的端口号,.net版为6163,Java版为8089 }); //执行查询操作,querySuccess为查询回调函数 queryService.query(callback); } static update({ fid, position, attr, service, layer }) { /* 1、确定修改的几何位置 */ var gpoint = new Zondy.Object.GPoint(position[0],position[1]) // 修改位置 /* 设置当前点要素的几何信息 */ var fGeom = new Zondy.Object.FeatureGeometry({ PntGeom: [gpoint] }) /* 2、样式信息 */ /* 2.2 设置样式信息 */ var pointInfo = new Zondy.Object.CPointInfo(POINT_STYLE) /* 设置当点要素的图形参数信息 */ var webGraphicInfo = new Zondy.Object.WebGraphicsInfo({ InfoType: 1, //点 PntInfo: pointInfo }) /* 3、属性 */ var attValue = attr.map(item=>item.value) /* 4、设置要素 */ var feature = new Zondy.Object.Feature({ fGeom: fGeom, //坐标--几何信息 GraphicInfo: webGraphicInfo, //样式信息 AttValue: attValue //属性 }) /* 设置要素为点要素 点 -->1 线 -->2 面 -->3 */ feature.setFType(1) feature.setFID(fid) //++ /* 5、设置要素集,添加要素 */ //创建一个要素数据集 var featureSet = new Zondy.Object.FeatureSet() /* 设置属性结构 */ var cAttStruct = new Zondy.Object.CAttStruct({ FldName: attr.map(item=>item.key), FldNumber: attr.length, //属性的个数 FldType: attr.map(item=>item.type) }) featureSet.AttStruct = cAttStruct /* 添加要素到要素数据集 */ featureSet.addFeature(feature) /* 6、调用服务,执行更新 */ /* 创建一个编辑服务类 第一个参数:服务的名称 第二参数:图层的名称 */ var editService = new Zondy.Service.EditDocFeature(service.name, service.layerId, { ip: 'localhost', port: '6163' //访问IGServer的端口号, .net为6163,Java为8089 }) //执行添加点要素功能 editService.update(featureSet, this.onPntSuccess(layer)) }}