# new FeatureServer(options)
要素服务
参数:
名称 | 类型 | 描述 |
---|---|---|
options |
Object | 构造参数 |
url |
String | 服务基地址,支持igs2.0的要素服务、矢量图层的要素查询以及矢量文档的要素查询 |
示例
//igs2.0的要素服务
// ES5引入方式
const { FeatureServer } = zondy.service
// ES6引入方式
import { FeatureServer } from "@mapgis/webclient-common"
const featureServer = new FeatureServer({
//服务地址,folder为IGS的服务管理中的文件夹夹名称,serviceName为发布的服务名
url: 'http://192.168.88.12:8089/igs/rest/services/{folder}/{serviceName}/FeatureServer'
})
//基于矢量图层的要素查询
const featureServer = new FeatureServer({
//服务地址,IGS1.0地址
url: 'http://localhost:6163/igs/rest/mrfs/layer'
//服务地址,IGS2.0地址
//url: 'http://localhost:8089/igs/rest/mrfs/layer'
})
//基于矢量文档的要素查询
const featureServer = new FeatureServer({
//服务地址,IGS1.0地址,serviceName为发布的服务名
url: 'http://localhost:6163/igs/rest/mrfs/docs/{serviceName}'
//服务地址,IGS2.0地址,serviceName为发布的服务名
//url: 'http://localhost:8089/igs/rest/mrfs/docs/{serviceName}'
})
继承关系
成员变量
# enableGlobeFetch
是否使用确据唯一的fetch对象,默认为true,当设为false时,会使用自己私有的fetch对象,所有的请求设置不会影响全局
- Inherited From:
示例
//设置请求基地址
// ES5引入方式
const { BaseServer } = zondy.service
// ES6引入方式
import { BaseServer } from "@mapgis/webclient-common"
let BaseServer = new BaseServer({
//请求基地址
url: '你的URL',
//使用私有的fetch对象
enableGlobeFetch: false,
//此时设置token等属性,不会影响全局的fetch对象
tokenValue: '你的token'
});
//继续使用全局fetch
BaseServer.enableGlobeFetch = true;
# headers
请求头参数
- Inherited From:
示例
//设置请求头参数
// ES5引入方式
const { BaseServer } = zondy.service
// ES6引入方式
import { BaseServer } from "@mapgis/webclient-common"
let BaseServer = new BaseServer({
//请求头
headers: {
//设置Content-Type为multipart/form-data
'Content-Type': 'multipart/form-data',
//设置token
'token': '你的token'
}
});
//动态修改
BaseServer.headers.token = '新token';
# requestInterceptor
请求发送拦截器
- Inherited From:
示例
//设置拦截器,任何一个继承自BaseServer的对象都可以设置,全局唯一
// ES5引入方式
const { BaseServer,RequestInterceptor } = zondy.service
// ES6引入方式
import { BaseServer,RequestInterceptor } from "@mapgis/webclient-common"
let BaseServer = new BaseServer({
//设置请求发送拦截器
requestInterceptor: new RequestInterceptor({
//请求发送前进行统一处理
before: function(config) {
//执行你的业务逻辑
//注意必须显示返回config对象,如果返回为空,则不发送请求
return config;
},
//请求发送失败时进行统一处理
failure: function(error) {
//执行你的业务逻辑
}
})
});
//动态修改
BaseServer.requestInterceptor.before = function() {};
# requestTimeout
请求超时时间,默认45000ms,即45s
- Inherited From:
示例
//设置超时时间
//初始化AddressServer服务对象
// ES5引入方式
const { BaseServer } = zondy.service
// ES6引入方式
import { BaseServer } from "@mapgis/webclient-common"
let BaseServer = new BaseServer({
//超时时间
requestTimeout: 2000
});
//动态修改
BaseServer.requestTimeout = 3000;
# responseInterceptor
请求响应拦截器
- Inherited From:
示例
//设置拦截器,任何一个继承自BaseServer的对象都可以设置,全局唯一
// ES5引入方式
const { BaseServer,ResponseInterceptor } = zondy.service
// ES6引入方式
import { BaseServer,ResponseInterceptor } from "@mapgis/webclient-common"
let BaseServer = new BaseServer({
//设置请求响应拦截器
responseInterceptor: new ResponseInterceptor({
//执行请求响应,接口调用成功时会执行的回调
success: function(result) {
//执行你的业务逻辑
//注意必须显示返回result对象,如果返回为空,则不执行请求响应成功回调
return result;
},
//请求响应成功,接口调用失败时会执行的函数
failure: function(result) {
//执行你的业务逻辑
//注意必须显示返回result对象,如果返回为空,则不执行回调韩式
return result;
}
})
});
//动态修改
BaseServer.responseInterceptor.success = function() {};
# tokenAttachType
指定token附加到何处
- Inherited From:
示例
//设置token值
// ES5引入方式
const { BaseServer } = zondy.service
const { TokenAttachType } = zondy.enum
// ES6引入方式
import { BaseServer,TokenAttachType } from "@mapgis/webclient-common"
let BaseServer = new BaseServer({
//token名
tokenValue: '你的token值',
//token值
tokenValue: '你的token值',
//指定token附加到url后面
tokenAttachType: TokenAttachType.url
});
//动态修改
BaseServer.tokenAttachType = TokenAttachType.header;
# tokenKey
token名
- Inherited From:
示例
//设置token名
// ES5引入方式
const { BaseServer } = zondy.service
// ES6引入方式
import { BaseServer } from "@mapgis/webclient-common"
let BaseServer = new BaseServer({
//token名
tokenKey: '你的tokenKey'
});
//动态修改
BaseServer.tokenKey = '新tokenKey';
# tokenValue
token值
- Inherited From:
示例
//设置token值
// ES5引入方式
const { BaseServer } = zondy.service
// ES6引入方式
import { BaseServer } from "@mapgis/webclient-common"
let BaseServer = new BaseServer({
//token值
tokenValue: '你的token值'
});
//动态修改
BaseServer.tokenValue = '新token值';
# url
服务基地址
- Inherited From:
示例
//设置请求基地址
// ES5引入方式
const { BaseServer } = zondy.service
// ES6引入方式
import { BaseServer } from "@mapgis/webclient-common"
let BaseServer = new BaseServer({
//请求基地址
url: '你的URL'
});
//动态修改
BaseServer.url = '新URL';
方法
# addFeature(options, GDBPOptions, DocOptions)
指定图层的要素添加,支持IGS2.0的要素添加服务、基于矢量图层的要素添加服务以及基于矢量文档的要素添加
参数:
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
options |
指定图层的要素添加参数,IGS2.0参数 |
||
layerId |
String | 0 | 图层id,必传 |
method |
String | FetchMethod.get | 请求类型 |
success |
function | 查询成功回调函数,若使用Promise方式则不必填写 |
|
failure |
function | 查询失败回调函数,若使用Promise方式则不必填写 |
|
features |
Array | [] | 要添加的要素集合 |
GDBPOptions |
基于矢量图层的新增要素参数 |
||
gdbp |
String | gdbp的url,仅支持单个数据库的要素新增,必传 |
|
featureSet |
Object | 要更新的要素集合,注意是igs1.0的格式,必传 |
|
DocOptions |
基于矢量文档的新增要素参数 |
||
mapIndex |
String | 地图在文档下的序号,必传 |
|
featureSet |
Object | 要更新的要素集合,注意是igs1.0的格式,必传 |
添加要素结果
示例
IGS2.0的要素新增示例
// 创建一个线要素
// ES5引入方式
const { Feature } = zondy
// ES6引入方式
import { Feature } from "@mapgis/webclient-common"
const lineString = new Feature({
//可填空或者和数据库中的表结构一一对应
attributes: {},
//可填空或者和系统库中的样式一一对应
styleInfo: {},
//设置几何
geometry: new zondy.geometry.LineString({
coordinates: [
[110.74, 32.41],
[112.89, 31.06],
[110.15, 30.16]
]
})
})
// 添加要素
featureServer.addFeature({
// 指定图层id
layerId: '0',
// 要添加的要素,可以添加多个要素
features: [lineString]
})
.then((res) => {
//成功回调函数
console.log('添加要素: ', res)
})
.catch((res) => {
//失败回调函数
console.log('添加要素失败: ', res)
})
基于矢量图层的要素新增示例
// 初始化资源服务
// ES5引入方式
const { ResourceServer} = zondy.service
const { Point} = zondy.geometry
const { Feature } = zondy
// ES6引入方式
import { ResourceServer,Point,Feature } from "@mapgis/webclient-common"
const resourceServer = new ResourceServer({
// 目录服务基地址,port可填6163(.net服务)或者8089(Java服务)
url: 'http://localhost:6163/igs/rest/mrcs'
})
// 查询数据库表结构
resourceServer.queryGDBPInfo({
// 要查询的gdbp的url
gdbpUrl: 'gdbp://MapGisLocal/ClientTheme/sfcls/湖北省市驻地'
})
.then((result) => {
// 表结构为result.data.FieldAtt
// 创建一个要素
const feature = new Feature({
// 设置要素id,若id已在数据库中存在,则自增id
id: 0,
// 设置几何,支持点、多点、线、多线、区、多区
geometry: new Point({
coordinates: [110.66482, 31.747766]
}),
// 这里的属性一定要和数据库的表结构一一对应,顺序也不能出错
attributes: {
"CODE": "1",
"NAME": "神龙架林区",
"mpLayer": "0"
},
//设置样式
styleInfo: {}
})
// 创建新增要素的结构体
const featureSet = {
// 设置表结构,必填
AttStruct: result.data.FieldAtt,
// 设置要添加的要素,客串多个要素
SFEleArray: [feature.toOldIGSFeature()]
}
// 添加要素
featureServer.addFeature({
// 新增要素的结构体
featureSet: featureSet,
// gdbo地址,仅支持单表添加
gdbp: 'gdbp://MapGisLocal/ClientTheme/sfcls/湖北省市驻地'
})
.then((result) => {
console.log('新增要素成功:', result);
})
.catch((result) => {
console.log('新增要素失败:', result);
})
})
.catch((result) => {
console.log('查询GDBO失败:', result);
})
基于矢量文档的要素新增示例
// 初始化资源服务
// ES5引入方式
const { MultiPoint} = zondy.geometry
const { Feature } = zondy
// ES6引入方式
import { MultiPoint,Feature } from "@mapgis/webclient-common"
const resourceServer = new ResourceServer({
// 目录服务基地址,port可填6163(.net服务)或者8089(Java服务)
url: 'http://localhost:6163/igs/rest/mrcs'
})
// 查询数据库表结构
resourceServer.queryGDBPInfo({
// 要查询的gdbp的url
gdbpUrl: 'gdbp://MapGisLocal/ClientTheme/sfcls/湖北省市驻地'
})
.then((result) => {
// 创建一个要素
const feature = new Feature({
// 设置要素id,若id已在数据库中存在,则自增id
id: 0,
// 设置几何,支持点、多点、线、多线、区、多区
geometry: new MultiPoint({
coordinates: [
[109.47509, 30.270342],
[111.27724, 30.706085]
]
}),
// 这里的属性一定要和数据库的表结构一一对应
attributes: {
"CODE": "0",
"Name": "测试点多点2",
"mpLayer": "0"
},
// 设置样式
styleInfo: {}
})
// 创建新增要素的结构体
const featureSet = {
// 设置表结构,必填
AttStruct: result.data.FieldAtt,
// 设置要添加的要素,客串多个要素
SFEleArray: [feature.toOldIGSFeature()]
}
// 添加要素
featureServer.addFeature({
// 新增要素的结构体
featureSet: featureSet,
// 地图在文档下的序号,从0开始编号
mapIndex: 0,
// 图层序号,从0开始编号
layerIndex: 2
})
.then((result) => {
console.log('新增要素成功:', result);
})
.catch((result) => {
console.log('新增要素失败:', result);
})
})
.catch((result) => {
console.log('查询GDBO失败:', result);
})
# deleteFeature(options, GDBPOptions, DocOptions)
指定图层的要素删除,支持IGS2.0的要素删除服务、基于矢量图层的要素删除服务以及基于矢量文档的要素删除服务
参数:
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
options |
指定图层的要素删除参数,IGS2.0参数 |
||
layerId |
String | 图层id,必传 |
|
method |
String | FetchMethod.get | 请求类型 |
success |
function | 查询成功回调函数,若使用Promise方式则不必填写 |
|
failure |
function | 查询失败回调函数,若使用Promise方式则不必填写 |
|
objectIds |
String | 过滤id,多个用英文逗号分隔(使用大数据作为数据源发布的要素服务,该参数是唯一有效参数) |
|
where |
String | 属性条件,类SQL语句 |
|
geometry |
Geometry | 空间几何条件 |
|
distance |
Number | 几何缓冲的距离,geometry为点、线时有效 |
|
returnDeleteResults |
Boolean | true | 是否返回每个要素删除的结果,默认为true,如果要高效的批量删除,应设置为false |
GDBPOptions |
基于矢量图层的要素删除 |
||
gdbp |
String | 图层的gdbp地址,允许多个图层,图层间用“;”号分隔,必填,例如: gdbp=gdbp://MapGisLocal/示例数据/ds/世界地图/sfcls/海洋陆地;gdbp://sa@SqlServerGIS/MPDBMASTER/ds/兰伯特(全国)_400万/sfcls/中国地级县 |
|
objectIds |
String | 需要删除的要素的OID值,OID为要素的唯一标识码,一个图层可包含多个objectIds间以“,”分隔,可包含多个图层,各个图层的objectIds间以“;”分隔,必填,lieu: objectIds=1,2,3;2,3,4;8 |
|
DocOptions |
基于矢量文档的要素删除 |
||
mapIndex |
String | 地图在文档下的序号,从0开始编号,必填 |
|
layerIndex |
String | 图层序号,从0开始编号,必填 |
|
objectIds |
String | 要删除的要素id,多个id以','分割,必填 |
返回要素删除结果
示例
IGS2.0的要素删除示例
// 删除要素
featureServer.deleteFeature({
// 图层id
layerId: '0',
// 要删除的要素id,多个要素id以','分割
objectIds: '0,1,2,3,5,6'
})
.then((res)=>{
console.log('要素删除成功:', res);
})
.catch((res)=>{
console.log('要素删除失败:', res);
})
基于矢量地图的要素删除示例
// 删除要素
featureServer.deleteFeature({
// gdbp的url
gdbp: 'gdbp://MapGisLocal/ClientTheme/sfcls/湖北省市驻地',
// 要删除的要素id,多个id以','分割
objectIds: '18053'
})
.then((res)=>{
console.log('要素删除成功:', res);
})
.catch((res)=>{
console.log('要素删除失败:', res);
})
基于基于矢量文档的要素删除示例
// 删除要素
featureServer.deleteFeature({
// 地图在文档下的序号,从0开始编号
mapIndex: 0,
// 图层序号,从0开始编号
layerIndex: 2,
// 要删除的要素id,多个id以','分割
objectIds: '18057'
})
.then((res)=>{
console.log('要素删除成功:', res);
})
.catch((res)=>{
console.log('要素删除失败:', res);
})
# queryFeatureById(options)
根据id获取指定图层指定要素,IGS2.0新增服务
参数:
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
options |
获取指定图层指定要素参数 |
||
layerId |
String | 图层id,必传 |
|
featureId |
Array | 要素id,必传 |
|
method |
String | FetchMethod.get | 请求类型 |
success |
function | 查询成功回调函数,若使用Promise方式则不必填写 |
|
failure |
function | 查询失败回调函数,若使用Promise方式则不必填写 |
返回指定图层指定要素
示例
根据id获取指定图层指定要素
featureServer.queryFeatureById({
// 图层id
layerId: '0',
// 要素id
featureId: '437'
})
.then((res) => {
console.log('要素查询成功:', res)
})
.catch((res) => {
console.log('要素查询失败:', res)
})
# queryFeatures(options)
指定图层的要素查询,支持IGS2.0,IGS1.0服务
参数:
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
options |
要素查询参数,IGS2.0服务 |
||
layerId |
String | 图层id, 必传 |
|
method |
String | FetchMethod.get | 请求类型 |
success |
queryLayerInfoSuccess | 查询成功回调函数,若使用Promise方式则不必填写 |
|
failure |
queryFailure | 查询失败回调函数,若使用Promise方式则不必填写 |
|
geometry |
Geometry | 要素查询几何条件 |
|
where |
String | 要素查询where条件 |
|
outFields |
String | 输出属性字段,可为*表示所有,多个用英文逗号分隔 |
|
objectIds |
String | 过滤id,多个用英文逗号分隔(参数优先级很高,可能导致其它筛选条件失效) |
|
distance |
Number | 0 | 仅igs2.0支持,几何缓冲的距离,geometry为point、line时有效(若数据源为大数据PG数据,且geometryType为line或者point时为必填数据) |
geometryPrecision |
Number | 返回要素几何信息中坐标xy的精度 |
|
rule |
Object | 仅1.0支持,rule={"CompareRectOnly":false,"MustInside":false,"Intersect":true},查询规则参数,JSON格式,CompareRectOnly为是否仅仅比较查询对象的外包络矩形框,MustInside为查询对象是否必须完全包含在输入的空间范围内,Intersect为是否与查询对象相交 |
|
isAsc |
Boolean | 仅1.0支持,是否升序排列,格式:true/false |
|
spatialRel |
SpatialRelation | 仅igs2.0支持,几何条件的空间判定规则,Intersects(相交)、EnvelopeIntersects(外包矩形相交)、Contains(包含)、Disjoint(相离) |
|
orderByFields |
String | 排序字段,格式: fieldName [ASC|DESC] |
|
groupByFieldsForStatistics |
String | Array.<Object> | igs2.0 分组统计的字段信息,格式为field1,field2;igs1.0 进行分组的字段以计算统计信息,示例:[{"LayerIndex": 0,"GroupFieldName": "NAME"}] |
|
resultRecordCount |
Number | 20 | 分页参数:结果返回条数,默认20 |
resultOffset |
Number | 分页参数:跳过条数 |
|
outStatistics |
Array | 计算一个或多个基于字段的统计信息结构,统计类型包括:FUNCTION_MAX/FUNCTION_MIN/FUNCTION_SUM/FUNCTION_AVG/FUNCTION_COUNT/FUNCTION_MAX_OID,示例:"[{"statisticType": "FUNCTION_SUM","onStatisticField": "field1","outStatisticFieldName":"fieldName1"}]" |
|
returnGeometry |
Boolean | true | 是否返回几何,默认为true |
returnAttribute |
Boolean | true | 是否返回属性,默认为true |
returnStyle |
Boolean | false | 是否返回图形参数信息,默认为false |
returnIdsOnly |
Boolean | false | 仅igs2.0支持,是否只返回id,默认为false |
returnCountOnly |
Boolean | false | 仅igs2.0支持,是否只返回条数,默认为false |
returnExtentOnly |
Boolean | false | 仅igs2.0支持,是否只返回范围,默认为false |
returnZ |
Boolean | false | 是否返回Z轴,默认为false |
inSrs |
String | 输入几何空间参照系,支持MapGIS参照系名称、EPSG格式参考系、WKT格式参考系,具体请参考IGS的API文档 |
|
outSrs |
String | 输出几何空间参照系,支持MapGIS参照系名称、EPSG格式参考系,WKT格式参考系,具体请参考IGS的API文档 |
返回指定图层要素查询结果
示例
IGS2.0的where查询
featureServer.queryFeatures({
// 图层id
layerId: '1',
// where语句
where: "NAME='天门市'"
})
.then((res)=>{
console.log('查询成功:', res)
})
.catch((res)=>{
console.log('查询失败:', res)
})
# queryFeaturesInLayers(options, GDBPOptions, DocsOptions)
全图层要素查询,支持igs2.0、igs1.0
参数:
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
options |
全图层要素查询参数 |
||
method |
String | FetchMethod.get | 请求类型 |
success |
queryLayerInfoSuccess | 查询成功回调函数,若使用Promise方式则不必填写 |
|
failure |
queryFailure | 查询失败回调函数,若使用Promise方式则不必填写 |
|
layerDefs |
Array | 多图层的属性条件,包括layerId、where、outFields;当值为空时,查询所有图层,并当为拉框查询时,自动过滤不需要不需要查询的图层,示例:"[{ "layerId":"0-0","where": "name='中国'", "outfields": "field1,field2"}]" |
|
geometry |
Geometry | 要素查询几何条件 |
|
distance |
Number | 0 | 几何缓冲的距离,geometry为point、line时有效(若数据源为大数据PG数据,且geometryType为line或者point时为必填数据) |
geometryPrecision |
Number | 返回要素几何信息中坐标xy的精度 |
|
spatialRel |
SpatialRelation | 几何条件的空间判定规则,Intersects(相交)、EnvelopeIntersects(外包矩形相交)、Contains(包含)、Disjoint(相离) |
|
resultRecordCount |
Number | 20 | 分页参数:结果返回条数,默认20 |
returnGeometry |
Boolean | true | 是否返回几何,默认为true |
returnAttribute |
Boolean | true | 是否返回属性,默认为true |
returnStyle |
Boolean | false | 是否返回图形参数信息,默认为false |
returnIdsOnly |
Boolean | false | 是否只返回id,默认为false |
returnCountOnly |
Boolean | false | 是否只返回条数,默认为false |
returnZ |
Boolean | false | 是否返回Z轴,默认为false |
inSrs |
String | 输入几何空间参照系,支持MapGIS参照系名称、EPSG格式参考系、WKT格式参考系,具体请参考IGS的API文档 |
|
outSrs |
String | 输出几何空间参照系,支持MapGIS参照系名称、EPSG格式参考系,WKT格式参考系,具体请参考IGS的API文档 |
|
GDBPOptions |
基于矢量图层的要素查询参数 |
||
gdbp |
String | 图层的gdbp地址,允许多个图层,图层间用“,”号分隔,必传 |
|
geometry |
Geometry | 几何查询条件 |
|
where |
String | where查询条件,类似sql语句 |
|
objectIds |
String | 需要查询的要素的OID值,OID为要素的唯一标识码,多个objectIds间以“,”分隔 |
|
page |
Number | 0 | 返回的要素分页的页数,默认返回第0页 |
pageCount |
Number | 20 | 要素结果集每页的记录数量,默认为20条/页 |
rule |
Object | 指定查询规则,参数不区分大小写,各参数的代表含义如下: CompareRectOnly表示是否仅比较要素的外包矩形,来判定是否与几何约束图形有交集;EnableDisplayCondition表示是否将隐藏图层计算在内;MustInside表示是否完全包含;Intersect表示是否相交 |
|
structs |
Object | 指定查询结果的结构,参数不区分大小写,可以省略,默认为IncludeAttribute:true,其他参数均为false;IncludeAttribute:是否包含属性信息;IncludeGeometry:是否包含空间信息;IncludeWebGraphic:是否包含图形信息(显示参数信息) |
|
orderField |
String | 排序字段名称,用于对输出结果进行排序,当ObjectIds有值时,orderField失效 |
|
isAsc |
Boolean | 按照字段进行排序时,是否升序排列 |
|
DocsOptions |
基于矢量文档的要素查询 |
||
mapIndex |
Number | 地图在文档下的序号,从0开始编号,必传 |
|
layerIndexes |
String | 图层序号,多图层间以“,”号分隔,必传 |
|
geometry |
Geometry | 几何查询条件 |
|
where |
String | where查询条件,类似sql语句 |
|
objectIds |
String | 需要查询的要素的OID值,OID为要素的唯一标识码,多个objectIds间以“,”分隔 |
|
page |
Number | 0 | 返回的要素分页的页数,默认返回第0页 |
pageCount |
Number | 20 | 要素结果集每页的记录数量,默认为20条/页 |
rule |
Object | 指定查询规则,参数不区分大小写,各参数的代表含义如下: CompareRectOnly表示是否仅比较要素的外包矩形,来判定是否与几何约束图形有交集;EnableDisplayCondition表示是否将隐藏图层计算在内;MustInside表示是否完全包含;Intersect表示是否相交 |
|
structs |
Object | 指定查询结果的结构,参数不区分大小写,可以省略,默认为IncludeAttribute:true,其他参数均为false;IncludeAttribute:是否包含属性信息;IncludeGeometry:是否包含空间信息;IncludeWebGraphic:是否包含图形信息(显示参数信息) |
|
orderField |
String | 排序字段名称,用于对输出结果进行排序,当ObjectIds有值时,orderField失效 |
|
isAsc |
Boolean | 按照字段进行排序时,是否升序排列 |
返回要素查询结果
示例
IGS2.0的几何查询
featureServer.queryFeaturesInLayers({
// ES5引入方式
const { Polygon } = zondy.geometry
// ES6引入方式
import { Polygon } from "@mapgis/webclient-common"
// 几何查询条件
geometry: new Polygon({
coordinates: [
[
[110.74, 32.41],
[112.89, 31.06],
[110.15, 30.16],
[110.74, 32.41]
]
]
})
})
.then((res)=>{
console.log('查询成功:', res);
})
.catch((res)=>{
console.log('查询失败:', res);
})
基于矢量文档的where查询
featureServer.queryFeaturesInLayers({
// 地图在文档下的序号,从0开始编号
mapIndex: 0,
// 图层序号,多图层间以“,”号分隔
layerIndexes: '1',
// where查询条件
where: "NAME='黄石市'"
})
.then((res)=>{
console.log('查询成功:', res);
})
.catch((res)=>{
console.log('查询失败:', res);
})
基于矢量图层的where查询
featureServer.queryFeaturesInLayers({
// 图层的gdbp地址,允许多个图层,图层间用“,”号分隔
gdbp: 'gdbp://MapGisLocalPlus/ClientTheme/ds/epsg4326/sfcls/湖北省市级区划2',
// where查询条件
where: "NAME='天门市'",
})
.then((res)=>{
console.log('查询成功:', res);
})
.catch((res)=>{
console.log('查询失败:', res);
})
# queryLayerInfo(options)
获取要素服务图层信息,支持IGS1.0,IGS2.0
参数:
名称 | 类型 | 描述 |
---|---|---|
options |
查询参数 |
|
layerId |
String | 图层id,必传 |
success |
function | 查询成功回调函数,若使用Promise方式则不必填写 |
failure |
function | 查询失败回调函数,若使用Promise方式则不必填写 |
返回要素服务图层信息
示例
获取要素服务图层信息
featureServer.queryLayerInfo({
// 图层id
layerId: '0'
})
.then((res)=>{
console.log('查询图层信息成功:', res)
})
.catch((res)=>{
console.log('查询图层信息失败:', res)
})
# queryServerInfo(options)
获取服务信息,IGS2.0新增服务
参数:
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
options |
查询参数 |
||
success |
function | 无 | 查询成功回调函数,若使用Promise方式则不必填写 |
failure |
function | 无 | 查询失败回调函数,若使用Promise方式则不必填写 |
- Inherited From:
示例
获取服务信息-回调方式
server.queryServerInfo({
success: function (result) {
console.log('请求成功:', result);
},
failure: function (result) {
console.log('请求失败:', result);
}
});
获取服务信息-promise方式
server.queryServerInfo({
})
.then(function (result) {
console.log('请求成功:', result);
}).catch(function (result) {
console.log('请求失败:', result);
});
# updateFeature(options, GDBPOptions)
指定图层的要素更新,支持IGS2.0的要素更新服务、基于矢量图层的要素更新服务以及基于矢量文档的要素更新服务
参数:
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
options |
指定图层的要素更新参数,IGS2.0服务参数 |
||
layerId |
String | 图层id,必传 |
|
method |
String | FetchMethod.get | 请求类型 |
success |
function | 查询成功回调函数,若使用Promise方式则不必填写 |
|
failure |
function | 查询失败回调函数,若使用Promise方式则不必填写 |
|
features |
Array | [] | 要更新的要素集合,需要注意要素属性必须携带FID字段才能更新 |
GDBPOptions |
基于矢量图层的要素更新参数 |
||
gdbp |
String | gdbp的url,仅支持单个数据库的要素更新,必传 |
|
featureSet |
Object | 要更新的要素集合,注意是igs1.0的格式,必传 |
返回图层更新结果
示例
IGS2.0的要素更新示例
// 创建线要素
// ES5引入方式
const { Feature } = zondy
const { LineString } = zondy.geometry
// ES6引入方式
import { Feature } from "@mapgis/webclient-common"
const lineString = new Feature({
// 更新要素时需要传一个FID来指定要素,其他的属性值可以根据需求来设置
attributes: { FID:'0' },
// 更新几何,注意几何一定要是GDBP表对应的几何类型
geometry: new LineString({
coordinates: [
[110.74, 32.41],
[112.89, 31.06],
[110.15, 30.16]
]
})
})
// 更新线要素
featureServer.updateFeature({
// 图层id
layerId: '1',
// 要更新的要素,支持一次更新多个要素
features: [lineString]
})
.then((res) => {
console.log('要素更新成功: ', res)
})
.catch((res) => {
console.log('要素更新失败: ', res)
})
基于矢量图层的要素更新示例
// 初始化资源服务
// ES5引入方式
const { ResourceServer } = zondy.service
const { Feature } = zondy
const { Point } = zondy.geometry
// ES6引入方式
import { ResourceServer,Feature, Point} from "@mapgis/webclient-common"
const resourceServer = new ResourceServer({
// 目录服务基地址,port可填6163(.net服务)或者8089(Java服务)
url: 'http://localhost:6163/igs/rest/mrcs'
})
// 查询数据库表结构
resourceServer.queryGDBPInfo({
// 要查询的gdbp的url
gdbpUrl: 'gdbp://MapGisLocal/ClientTheme/sfcls/湖北省市驻地'
})
.then((result) => {
// 表结构为result.data.FieldAtt
// 创建一个要素
const feature = new Feature({
// 设置更新要素的id
id: 1220,
// 设置几何,支持点、多点、线、多线、区、多区
geometry: new Point({
coordinates: [110.66482, 31.747766]
}),
// 更新属性
attributes: {
"CODE": "1",
"NAME": "新的神龙架林区",
"mpLayer": "0"
}
})
// 创建更新要素的结构体
const featureSet = {
// 设置表结构,必填
AttStruct: result.data.FieldAtt,
// 设置要添加的要素,客串多个要素
SFEleArray: [feature.toOldIGSFeature()]
}
// 更新要素
featureServer.updateFeature({
// 更新要素的结构体
featureSet: featureSet,
// gdbo地址,仅支持单表添加
gdbp: 'gdbp://MapGisLocal/ClientTheme/sfcls/湖北省市驻地'
})
.then((result) => {
console.log('更新要素成功:', result);
})
.catch((result) => {
console.log('更新要素失败:', result);
})
})
.catch((result) => {
console.log('查询GDBO失败:', result);
})
基于矢量文档的要素更新示例
// 初始化资源服务
// ES5引入方式
const { ResourceServer } = zondy.service
const { Feature } = zondy
const { MultiPoint } = zondy.geometry
// ES6引入方式
import { ResourceServer,Feature,MultiPoint } from "@mapgis/webclient-common"
const resourceServer = new ResourceServer({
// 目录服务基地址,port可填6163(.net服务)或者8089(Java服务)
url: 'http://localhost:6163/igs/rest/mrcs'
})
// 查询数据库表结构
resourceServer.queryGDBPInfo({
// 要查询的gdbp的url
gdbpUrl: 'gdbp://MapGisLocal/ClientTheme/sfcls/湖北省市驻地'
})
.then((result) => {
// 创建一个要素
const feature = new Feature({
// 设置要更新的要素id
id: 0,
// 设置几何,支持点、多点、线、多线、区、多区
geometry: new MultiPoint({
coordinates: [
[109.47509, 30.270342],
[111.27724, 30.706085]
]
}),
// 更新属性
attributes: {
"CODE": "0",
"Name": "多点",
"mpLayer": "0"
}
})
// 创建更新要素的结构体
const featureSet = {
// 设置表结构,必填
AttStruct: result.data.FieldAtt,
// 设置要更新的要素,客串多个要素
SFEleArray: [feature.toOldIGSFeature()]
}
// 更新要素
featureServer.updateFeature({
// 更新要素的结构体
featureSet: featureSet,
// 地图在文档下的序号,从0开始编号
mapIndex: 0,
// 图层序号,从0开始编号
layerIndex: 2
})
.then((result) => {
console.log('更新要素成功:', result);
})
.catch((result) => {
console.log('更新要素失败:', result);
})
})
.catch((result) => {
console.log('查询GDBO失败:', result);
})
更新要素样式
// ES5引入方式
const { ResourceServer, FeatureServer } = zondy.service
const { Polygon } = zondy.geometry
const { Feature } = zondy
// ES6引入方式
import { ResourceServer, FeatureServer, Polygon, Feature } from "@mapgis/webclient-common"
// 初始化资源服务对象
const resourceServer = new ResourceServer({
url: 'http://{ip}:{port}/igs/rest/services/system/ResourceServer'
})
// 初始化要素服务对象
const featureServer = new FeatureServer({
url: 'http://{ip}:{port}/igs/rest/services/{要素服务名}/FeatureServer'
})
// 查询要素图层信息
featureServer.queryLayerInfo({
// 要素图层ID
layerId: '0'
}).then(function (layerInfo) {
// 通过gdbp地址查询系统库
resourceServer.queryTempDataInfo({
// gdbp地址
url: layerInfo.data.url
}).then(function (tempDataInfo) {
// 获取系统库名称
const systemLibGuid = tempDataInfo.data.systemLibGuid
// 查询要素
featureServer.queryFeaturesInLayers({
// 图层id
layerId: '0',
// 返回要素样式
returnStyle: true
}).then(function (featureInfo) {
// 获取要素
const featureData = featureInfo.data.layers[0].features[0]
// 当通过颜色查找色号时,MapGIS桌面会通过颜色值的模糊匹配去查找色号,两个不同的颜色,查找出的色号可能会一样,因此无法通过颜色查找色号
// 因此推荐用户通过querySystemColorList查询到指定系统库的颜色列表,然后再前端根据自己的项目实际情况,写一个调色板来选择色号,注意该接口需要设置翻页参数
// 此步骤是可选项,也可以像下方代码,直接更改色号
resourceServer.querySystemColorList({
// 系统库ID
sysLib: systemLibGuid,
// 查询第几页
page: 1,
// 每页数量
pageSize: 20,
}).then(function (colorList) {
console.log("色号列表:", colorList)
})
// 直接更改色号
featureData.styleInfo.fillColor = 112
// 构造要更新的要素对象
const feature = new Feature({
// 更新属性,可以更新部分属性,但是FID是必选项,{FID:'xxx'}
attributes: featureData.attributes,
// 更新几何,必须更新几何
geometry: new Polygon({
coordinates: featureData.geometry.coordinates
}),
// 更新样式,可选项
styleInfo: featureData.styleInfo
})
// 更新要素对象
featureServer.updateFeature({
// 请求方式
method: 'POST',
// 要更新的图层ID
layerId: '0',
// 要更新要素对象
features: [feature]
})
})
})
})