# new IGSMapImageLayer(options)
IGS地图图片图层,
支持IGS1.0和2.0两个服务版本,支持自定义坐标系,当IGS版本是1.0时,需要手动设置图层坐标系,当IGS版本是2.0时,会自动读取元信息上的坐标系,不需要用户指定
[ES5引入方式]:
Zondy.Layer.IGSMapImageLayer()
[ES6引入方式]:
import { IGSMapImageLayer } from "@mapgis/webclient-common"
针对图层的操作请在图层加载完毕事件中进行
Layer.on('layerview-created', function (result) {
console.log("加载完毕:", result.layer)
});
如果不想在该事件中放入业务代码,则请确认图层资源已加载完毕后再进行操作
if(layer.loadStatus === 'loaded') {
// 你的业务逻辑
}
参数:
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
options |
Object | 构造参数 |
|
url |
String | 服务基地址,可以在末尾指定子图层id,若指定,则仅显示该子图层,例如:http://{服务基地址}/子图层id,[仅显示指定子图层] |
|
httpMethod |
String | "GET" | HTTP请求方式,默认为GET请求
IGS1.0的服务为:http://{ip}:6163/igs/rest/mrms/docs/{serviceName},暂时无法从元信息中获取坐标系,请自行指定图层坐标系,参考示例:[IGS1.0的地图图片图层示例] |
id |
String | 图层id,不给则给一个随机的id |
|
opacity |
Number | 1 | 图层透明度,0到1之间的值,0为完全透明,1为不透明,参考示例:[设置图层透明度] |
visible |
Boolean | true | 图层显示或隐藏,true则显示,false则隐藏,参考示例:[设置图层显示或隐藏] |
sublayers |
Array.<Collection> | [] | 指定子图层参数,可设置子图层的可见性,顺序以及子图层渲染参数,其中图层可见性支持IGS1.0以及2.0服务,
子图层顺序以及专题图参数仅支持IGS2.0服务,目前子图层支持的专题图如下: |
spatialReference |
SpatialReference | 图层坐标系,支持4326(包含4490,4214以及4610)、3857以及EPSG上的自定义坐标系,坐标系默认从元信息中获取,也可指定坐标系, 参考示例:[设置图层坐标系] |
|
imageWidth |
Number | 256 | 图片宽度,单位px,参考示例:[设置图片大小] |
imageHeight |
Number | 256 | 图片高度,单位px,参考示例:[设置图片大小] |
minScale |
Number | null | 最小比例尺,只有当地图视图的比例尺大于最小比例尺时显示地图图片图层 |
maxScale |
Number | null | 最大比例尺,只有当地图视图的比例尺小于最大比例尺时显示地图图片图层 |
tokenKey |
String | 'token' | token名 |
tokenValue |
String | token值,只有当tokenValue存在时,才会绑定token |
|
imageTransparency |
Boolean | true | 图片中没有数据的地方是否透明,默认为true,即透明 |
clippingArea |
Polygon | Extent | Circle | null | null | 图层空间裁剪范围,仅支持多边形裁剪、矩形裁剪、圆形裁剪 |
支持如下方法:
[1、加载图层资源][2、根据子图层id查询子图层]
3、刷新图层
[4、根据范围和大小获取image标签]
[5、创建一个该服务的子图层克隆对象]
[6、根据参数获取图片的url]
[7、更新子图层]
[8、将图层转为json对象]
[9、克隆图层对象]
示例
// ES5引入方式
const { Map,MapView,SpatialReference } = Zondy
const { IGSMapImageLayer } = Zondy.Layer
// ES6引入方式
import { Map,MapView,SpatialReference,IGSMapImageLayer } from "@mapgis/webclient-common"
// 初始化图层管理容器
const map = new Map();
// 初始化地图视图对象
const mapView = new MapView({
// 视图id
viewId: "viewer-id",
// 图层管理容器
map: map
});
// 添加图层
const igsMapImageLayer = new IGSMapImageLayer({
// 服务基地址
url: 'http://{ip}:6163/igs/rest/mrms/docs/{serviceName}',
// IGS1.0服务,暂时无法从元信息中获取坐标系,请自行指定图层坐标系
spatialReference: new SpatialReference({
wkid: 4326
})
});
map.add(igsMapImageLayer);
// ES5引入方式
const { Map,MapView } = Zondy
const { IGSMapImageLayer } = Zondy.Layer
// ES6引入方式
import { Map,MapView,IGSMapImageLayer } from "@mapgis/webclient-common"
// 初始化图层管理容器
const map = new Map();
// 初始化地图视图对象
const mapView = new MapView({
// 视图id
viewId: "viewer-id",
// 图层管理容器
map: map
});
// 添加图层
const igsMapImageLayer = new IGSMapImageLayer({
// 服务基地址
url: 'http://{ip}:{port}/igs/rest/services/{serviceName}/MapServer'
});
map.add(igsMapImageLayer);
// ES5引入方式
const { SpatialReference} = Zondy
const { IGSMapImageLayer } = Zondy.Layer
// ES6引入方式
import { SpatialReference,IGSMapImageLayer } from "@mapgis/webclient-common"
// 添加图层
const igsMapImageLayer = new IGSMapImageLayer({
// 服务基地址
url: 'http://{ip}:{port}/igs/rest/services/{serviceName}/MapServer',
// 自定义坐标新
spatialReference: new SpatialReference({
// 指定的wkid号,可在https://epsg.io/网站查询
wkid: '指定的wkid号'
})
});
map.add(igsMapImageLayer);
// ES5引入方式
const { Map,MapView} = Zondy
const { IGSMapImageLayer } = Zondy.Layer
// ES6引入方式
import { Map,MapView,IGSMapImageLayer } from "@mapgis/webclient-common"
// 初始化图层管理容器
const map = new Map();
// 初始化地图视图对象
const mapView = new MapView({
// 视图id
viewId: "viewer-id",
// 图层管理容器
map: map
});
// 添加图层
const igsMapImageLayer = new IGSMapImageLayer({
// 服务基地址
url: 'http://{ip}:{port}/igs/rest/services/{serviceName}/MapServer',
// 瓦片宽度
imageWidth: 512,
// 瓦片高度
imageHeight: 512
});
map.add(igsMapImageLayer);
// ES5引入方式
const { IGSMapImageLayer } = Zondy.Layer
// ES6引入方式
import { IGSMapImageLayer } from "@mapgis/webclient-common"
// 添加图层
const igsMapImageLayer = new IGSMapImageLayer({
// 服务基地址
url: 'http://{ip}:{port}/igs/rest/services/{serviceName}/MapServer',
// 当sublayers为空时显示所有子图层
sublayers: []
});
map.add(igsMapImageLayer);
// ES5引入方式
const { IGSMapImageLayer } = Zondy.Layer
// ES6引入方式
import { IGSMapImageLayer } from "@mapgis/webclient-common"
// 添加图层
const igsMapImageLayer = new IGSMapImageLayer({
// 服务基地址
url: 'http://{ip}:{port}/igs/rest/services/{serviceName}/MapServer',
// 根据id显示子图层
sublayers: [
{
// 子图层id
id: 1,
// 显示子图层
visible: true
}
]
});
map.add(igsMapImageLayer);
// ES5引入方式
const { IGSMapImageLayer } = Zondy.Layer
// ES6引入方式
import { IGSMapImageLayer } from "@mapgis/webclient-common"
// 添加图层
const igsMapImageLayer = new IGSMapImageLayer({
// 服务基地址
url: 'http://{ip}:{port}/igs/rest/services/{serviceName}/MapServer'
});
map.add(igsMapImageLayer);
// 通过方法设置子图层显隐
igsMapImageLayer.setSubLayer({
id: 0,
visible: false
})
// ES5引入方式
const { IGSMapImageLayer } = Zondy.Layer
// ES6引入方式
import { IGSMapImageLayer } from "@mapgis/webclient-common"
// 添加图层
const igsMapImageLayer = new IGSMapImageLayer({
// 服务基地址
url: 'http://{ip}:{port}/igs/rest/services/{serviceName}/MapServer'
});
map.add(igsMapImageLayer);
// 根据id获取子图层
const subLayer = igsMapImageLayer.findSublayerById(0)
// 设置子图层显隐
subLayer.visible = false
// ES5引入方式
const { IGSMapImageLayer } = Zondy.Layer
// ES6引入方式
import { IGSMapImageLayer } from "@mapgis/webclient-common"
const igsMapImageLayer = new IGSMapImageLayer({
// 服务基地址
url: 'http://{ip}:{port}/igs/rest/services/{serviceName}/MapServer',
// 设置子图层顺序
sublayers: [{
id: '0',
index: 2
},{
id: '1',
index: 1
}]
});
map.add(igsMapImageLayer);
// ES5引入方式
const { IGSMapImageLayer } = Zondy.Layer
// ES6引入方式
import { IGSMapImageLayer } from "@mapgis/webclient-common"
const igsMapImageLayer = new IGSMapImageLayer({
// 服务基地址
url: 'http://{ip}:{port}/igs/rest/services/{serviceName}/MapServer'
});
map.add(igsMapImageLayer);
// 设置子图层顺序
igsMapImageLayer.setSubLayer({
// 子图层id
id: '子图层id',
// 子图层顺序
index: 2
})
// ES5引入方式
const { IGSMapImageLayer } = Zondy.Layer
// ES6引入方式
import { IGSMapImageLayer } from "@mapgis/webclient-common"
const igsMapImageLayer = new IGSMapImageLayer({
// 服务基地址
url: 'http://{ip}:{port}/igs/rest/services/{serviceName}/MapServer'
});
map.add(igsMapImageLayer);
// 根据id获取子图层
const subLayer = igsMapImageLayer.findSublayerById(0)
// 设置子图层顺序
subLayer.index = 2
// ES5引入方式
const { IGSMapImageLayer } = Zondy.Layer
const { UniqueValueRenderer } = Zondy.Renderer
const { SimpleFillSymbol,SimpleLineSymbol } = Zondy.Symbol
const { Color } = Zondy
// ES6引入方式
import { IGSMapImageLayer,UniqueValueRenderer,SimpleFillSymbol,SimpleLineSymbol,Color } from "@mapgis/webclient-common"
igsMapImageLayer = new IGSMapImageLayer({
// 服务基地址
url: 'http://{ip}:{port}/igs/rest/services/{serviceName}/MapServer',
// 设置子图层专题图
sublayers: [
{
// 子图层id
id: '子图层id',
// 专题图参数
renderer: new UniqueValueRenderer({
//字段名
field: '你的字段名',
// 默认符号,不在专题图指定范围内的会采用该样式,可不设置
defaultSymbol: new SimpleFillSymbol({
// 填充颜色
color: 'rgba(1,1,252,0)',
// 外边线样式
outline: new SimpleLineSymbol({
//线颜色
color: new Color(255, 1, 0, 1),
//线宽
width: 1
})
}),
//单值专题图字段样式
uniqueValueInfos: [{
//指定字段值
value: "指定的值",
//匹配到该值后的样式
symbol: new SimpleFillSymbol({
// 填充颜色
color: 'rgba(1,1,252,1)',
// 外边线样式
outline: new SimpleLineSymbol({
//线符号颜色
color: new Color(255, 1, 0, 11),
//线宽
width: 1
})
})
},{
//指定字段值
value: "指定的值",
//匹配到该值后的样式
symbol: new SimpleFillSymbol({
// 填充颜色
color: new Color(211, 111, 11, 1)
})
}]
})
}
]
});
map.add(igsMapImageLayer);
// ES5引入方式
const { IGSMapImageLayer } = Zondy.Layer
const { ClassBreakRenderer } = Zondy.Renderer
const { SimpleFillSymbol,SimpleLineSymbol } = Zondy.Symbol
const { Color } = Zondy
// ES6引入方式
import { IGSMapImageLayer,ClassBreakRenderer,SimpleFillSymbol,SimpleLineSymbol,Color } from "@mapgis/webclient-common"
const igsMapImageLayer = new IGSMapImageLayer({
// 服务基地址
url: 'http://{ip}:{port}/igs/rest/services/{serviceName}/MapServer',
// 设置子图层专题图
sublayers: [
{
// 子图层id
id: '子图层id',
// 专题图参数
renderer: new ClassBreakRenderer({
//字段名
field: '你的字段名',
// 指定默认样式,不在专题图指定范围内的会采用该样式,可不设置
defaultSymbol: new SimpleFillSymbol({
// 填充颜色
color: 'rgba(222,1,252,1)',
// 线符号样式
outline: new SimpleLineSymbol({
//线符号颜色
color: new Color(255, 1, 0, 1),
//线宽
width: 1
})
}),
//单值专题图字段样式
classBreakInfos: [{
// 最大范围
maxValue: "最大范围",
// 最小范围
minValue: "最小范围",
//匹配到该值后的样式
symbol: new SimpleFillSymbol({
// 填充颜色
color: 'rgba(1,1,252,1)',
// 线符号样式
outline: new SimpleLineSymbol({
//线符号颜色
color: new Color(255, 1, 0, 1),
//线宽
width: 1
})
})
}]
})
}
]
});
map.add(igsMapImageLayer);
// ES5引入方式
const { IGSMapImageLayer } = Zondy.Layer
const { ClassBreakRenderer } = Zondy.Renderer
const { SimpleFillSymbol,SimpleLineSymbol } = Zondy.Symbol
const { Color } = Zondy
// ES6引入方式
import { IGSMapImageLayer,ClassBreakRenderer,SimpleFillSymbol,SimpleLineSymbol,Color } from "@mapgis/webclient-common"
const igsMapImageLayer = new Zondy.Layer.IGSMapImageLayer({
// 服务基地址
url: 'http://{ip}:{port}/igs/rest/services/{serviceName}/MapServer'
});
map.add(igsMapImageLayer);
// 设置子图层专题图
igsMapImageLayer.setSubLayer({
// 子图层id
id: '子图层id',
// 专题图参数
renderer: new Zondy.Renderer.ClassBreakRenderer({
//字段名
field: '你的字段名',
// 指定默认样式,不在专题图指定范围内的会采用该样式,可不设置
defaultSymbol: new Zondy.Symbol.SimpleFillSymbol({
// 填充颜色
color: 'rgba(222,1,252,1)',
// 线符号样式
outline: new Zondy.Symbol.SimpleLineSymbol({
//线符号颜色
color: new Zondy.Color(255, 1, 0, 1),
//线宽
width: 1
})
}),
//单值专题图字段样式
classBreakInfos: [{
// 最大范围
maxValue: "最大范围",
// 最小范围
minValue: "最小范围",
//匹配到该值后的样式
symbol: new Zondy.Symbol.SimpleFillSymbol({
// 填充颜色
color: 'rgba(1,1,252,1)',
// 线符号样式
outline: new Zondy.Symbol.SimpleLineSymbol({
//线符号颜色
color: new Zondy.Color(255, 1, 0, 1),
//线宽
width: 1
})
})
}]
})
})
// ES5引入方式
const { IGSMapImageLayer } = Zondy.Layer
const { ClassBreakRenderer } = Zondy.Renderer
const { SimpleFillSymbol,SimpleLineSymbol } = Zondy.Symbol
const { Color } = Zondy
// ES6引入方式
import { IGSMapImageLayer,ClassBreakRenderer,SimpleFillSymbol,SimpleLineSymbol,Color } from "@mapgis/webclient-common"
const igsMapImageLayer = new IGSMapImageLayer({
// 服务基地址
url: 'http://{ip}:{port}/igs/rest/services/{serviceName}/MapServer'
});
map.add(igsMapImageLayer);
// 根据id获取子图层
const subLayer = igsMapImageLayer.findSublayerById(0)
// 设置子图专题图
subLayer.renderer = new ClassBreakRenderer({
//字段名
field: '你的字段名',
// 指定默认样式,不在专题图指定范围内的会采用该样式,可不设置
defaultSymbol: new SimpleFillSymbol({
// 填充颜色
color: 'rgba(222,1,252,1)',
// 线符号样式
outline: new SimpleLineSymbol({
//线符号颜色
color: new Color(255, 1, 0, 1),
//线宽
width: 1
})
}),
//单值专题图字段样式
classBreakInfos: [{
// 最大范围
maxValue: "最大范围",
// 最小范围
minValue: "最小范围",
//匹配到该值后的样式
symbol: new SimpleFillSymbol({
// 填充颜色
color: 'rgba(1,1,252,1)',
// 线符号样式
outline: new SimpleLineSymbol({
//线符号颜色
color: new Color(255, 1, 0, 1),
//线宽
width: 1
})
})
}]
})
// ES5引入方式
const { IGSMapImageLayer } = Zondy.Layer
// ES6引入方式
import { IGSMapImageLayer } from "@mapgis/webclient-common"
// 初始化时设置
const igsMapImageLayer = new IGSMapImageLayer({
// 服务基地址
url: 'http://{ip}:{port}/igs/rest/services/{serviceName}/MapServer',
// 设置透明度
opacity: 1.0
});
map.add(igsMapImageLayer);
// 加载完成后设置
igsMapImageLayer.on('layerview-created', function (result) {
console.log("加载完毕:", result.layer)
// 视点跳转
igsMapImageLayer.opacity = 0.5
})
/ ES5引入方式
const { IGSMapImageLayer } = Zondy.Layer
// ES6引入方式
import { IGSMapImageLayer } from "@mapgis/webclient-common"
// 初始化时设置
const igsMapImageLayer = new IGSMapImageLayer({
// 服务基地址
url: 'http://{ip}:{port}/igs/rest/services/{serviceName}/MapServer',
// 显示或隐藏图层
visible: true
});
map.add(igsMapImageLayer);
// 加载完成后设置
igsMapImageLayer.on('layerview-created', function (result) {
console.log("加载完毕:", result.layer)
// 显示或隐藏图层
igsMapImageLayer.visible = !igsMapImageLayer.visible
})
map.remove(igsMapImageLayer)
/ ES5引入方式
const { IGSMapImageLayer } = Zondy.Layer
// ES6引入方式
import { IGSMapImageLayer } from "@mapgis/webclient-common"
// 初始化时设置
const igsMapImageLayer = new IGSMapImageLayer({
// 服务基地址,可指定子图层id
url: 'http://{ip}:{port}/igs/rest/services/{serviceName}/MapServer/{子图层id}',
// 显示或隐藏图层
visible: true
});
map.add(igsMapImageLayer);
// 初始化图层管理容器
/ ES5引入方式
const { Map ,SceneView,SpatialReference} = Zondy
const { IGSMapImageLayer} = Zondy.Layer
// ES6引入方式
import {Map ,SceneView,SpatialReference, IGSMapImageLayer } from "@mapgis/webclient-common"
const map = new Map();
// 初始化地图视图对象
const sceneView = new SceneView({
// 视图id
viewId: "mapgis-3d-viewer",
// 图层管理容器
map: map
});
const arcgisMapImageLayer = new IGSMapImageLayer({
url: 'https://map.geoq.cn/arcgis/rest/services/ChinaOnlineStreetWarm/MapServer',
// 注意一个MapImage图层可能支持多个坐标系,这里指定4326坐标系
spatialReference: new SpatialReference({
wkid: 4326
})
});
map.add(arcgisMapImageLayer);
// 图层加载完毕
igsMapImageLayer.on('layerview-created', function (result) {
console.log("加载完毕:", result.layer)
// 视点跳转
sceneView.flyTo({
extent: result.layer.extent
})
})
// 加载完毕后,更改图层顺序
map.reorder(igsMapImageLayer, '要移动到的index');
继承关系
成员变量
# readonly loadStatus
图层加载状态
- Default Value:
- not-loaded
查看源代码 common/document/layer/igserver/IGSVectorTileLayer.js, line 428
# readonly url
服务基地址
- Inherited From:
查看源代码 common/document/layer/baseLayer/MapImageLayer.js, line 26
方法
# static clone(igsMapImageLayer)
克隆图层对象
参数:
名称 | 类型 | 描述 |
---|---|---|
igsMapImageLayer |
IGSMapImageLayer | 被克隆的对象 |
克隆后的图层对象
示例
// 添加图层
const igsMapImageLayer = new Zondy.Layer.IGSMapImageLayer({
// 服务基地址
url: 'http://{ip}:6163/igs/rest/mrms/docs/{serviceName}'
});
const newLayer = Zondy.Layer.IGSMapImageLayer.clone(igsMapImageLayer)
# createServiceSublayers()
服务上的子图层对象
# fetchImage(extent, widthopt, heightopt)
根据范围和大小获取image标签
参数:
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
extent |
Extent | ||
width |
Number | 256 | 图片宽度,单位px |
height |
Number | 256 | 图片高度,单位px |
示例
igsMapImageLayer.fetchImage({
// 你的范围
extent: new Zondy.Geometry.Extent(),
// 图片宽度
width: 256,
// 图片高度
height: 256
}).then((image) => {
// 这里返回一个html的image标签
})
# getImageUrl(options)
根据参数获取图片的url
参数:
名称 | 类型 | 描述 |
---|---|---|
options |
||
extent |
Extent | 图片范围 |
width |
Number | 图片宽度 |
height |
Number | 图片高度 |
String 图片的url
示例
const url = igsMapImageLayer.getImageUrl({
// 你的范围
extent: new Zondy.Geometry.Extent(),
// 图片宽度
width: 256,
// 图片高度
height: 256
})
# load()
加载图层资源
示例
// 初始化图层
const igsMapImageLayer = new Zondy.Layer.IGSMapImageLayer({
// 服务基地址
url: 'http://{ip}:{port}/igs/rest/services/{serviceName}/MapServer',
});
igsMapImageLayer.load().then((result) => {
// 获取完图层信息
console.log(result)
})
事件
# 子图层显隐更新完毕事件
子图层显隐更新完毕事件,请注意该事件是图层更新事件(layerview-update)的子事件
属性:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
event |
Object | 事件对象 |
||
type |
String |
<optional> |
'layerview-update' | 图层更新完毕事件 |
message |
String |
<optional> |
null | 更新描述 |
updateContent |
Array.<UpdateContent> |
<optional> |
null | 更新详情对象 |
layer |
Layer |
<optional> |
null | 地图图层对象 |
layerView |
MapView |
<optional> |
null | 图层的视图对象 |
sourceTarget |
Layer |
<optional> |
null | 事件发起对象 |
target |
Map |
<optional> |
null | 事件接收对象 |
示例
子图层显隐更新完毕事件
Layer.on('layerview-update', function (event) {
// 获取更新事件对象
console.log("更新完毕:", event)
// 获取更新详情数组
const updateContent = event.updateContent
// 循环数组,根据事件名进行后续操作
for (let i = 0; i < updateContent.length; i++) {
// 子图层显隐更新完毕事件
if(updateContent[i].name === 'sublayerVisible'){
console.log("子图层显隐更新完毕事件:", event);
}
}
});