1. GeoJsonLayer
Extends: Layer
1.1. 初始化 new GeoJsonLayer(options)
GeoJSON/TopoJSON数据图层,可实现GeoJSON/TopoJSON数据的添加、移除、缩放至和显隐等操作
(注意:
1.目前仅支持空间参考系标识为EPSG:4326和EPSG:4490的数据;
2.该类适用于小体量的矢量数据的加载,若要加载较大体量的矢量数据请分别使用Pointsymbollayer、AreaLayer和LineLayer的相关批量加载方法;
3.添加GeoJsonLayer后,为避免矢量面状要素出现破碎的情况,默认会关闭地形深度检测。
若添加地形数据后须开启,否则会产生漂移,可通过代码geoMap.scene.globe.depthTestAgainstTerrain=true
实现)
Param | Type | Description |
---|---|---|
options | Object |
包含以下参数的Object对象: |
[options.name] | String |
图层名称; |
[options.show] | Boolean |
是否显示; |
[options.customGroupId] | String |
自定义分组的ID。 |
Example
//通过图层管理类统一创建
let jsonLayer = layerManager.createLayer(BOSGeo.LayerType.GEOJSON, 'GEOJSON123', {customGroupId: 'vector' });
1.2. 属性
属性名 | Type | Default | Description |
---|---|---|---|
show | Boolean |
是否显示图层 |
|
color | String |
颜色,十六进制的颜色字符串 |
|
opacity | Number |
透明度 |
1.3. 方法
1.3.1. geoJsonLayer.add(jsonParam) ⇒ Promise.<GeoJsonDataSource> | undefined
添加GeoJSON/TopoJSON数据(注意:下述参数中url、name、loaded为通用参数,而marker开头的参数只适用于点要素,其余参数如无特殊说明适用于线和面要素)
Param | Type | Default | Description |
---|---|---|---|
options | Object |
包含以下参数的Object对象: |
|
options.url | Resource/String/Object |
可以是url、GeoJSON object或者TopoJSON object; |
|
[options.name] | String |
图形名称; |
|
[options.clampToGround] | Boolean |
false |
地形存在时是否贴地。值true时贴地,此时轮廓线设置将不起作用,注记文字label看起来不会有漂移感;值为false时平铺,若有地形,部分面状数据将显示不完整,注记文字label看起来会有漂移感。 |
[options.opacity] | Number |
1 |
填充色不透明度,取值范围[0-1]; |
[options.stroke] | String |
"#FF0000" |
轮廓线的颜色,可以是#rgb, #rrggbb, rgb(), rgba(), hsl(), 或者hsla()格式的CSS颜色; |
[options.lineType] | String |
"实线" |
线的类型,"分段"-分段线,"发光"-发光线,"实线"-实线(默认值); |
[options.glowPower] | Number |
0.25 |
发光线的强度值,占线宽的百分比; |
[options.zoomToTarget] | Boolean |
false |
是否缩放至当前加载的GeoJson对象范围内; |
[options.showPolyline] | Boolean |
false |
是否添加轮廓线; |
[options.strokeWidth] | Number |
2 |
showPolyline=true时有效,轮廓线的宽度,单位:像素; |
[options.showLabelField] | String |
|
添加显示注记字段,默认值为null,即不显示(若设置了该参数,点要素的符号将不会显示); |
[options.labelFont] | String |
'normal 16px MicroSoft YaHei' |
注记字体大小和样式; |
[options.labelBackgroundColor] | String |
"rgba(42,42,42,0.8)" |
注记背景颜色,可以是#rgb, #rrggbb, rgb(), rgba(), hsl(), 或者hsla()格式的CSS颜色; |
[options.labelShowBackground] | Boolean |
true |
是否显示注记背景; |
[options.labelNF] | Array.<Number> |
[0.0,Number.MAX_VALUE] |
注记可见的范围,默认所有地球范围可见; |
[options.disableDepthTestDistance] | Number |
1000 |
label配置,指定从相机到禁用深度测试的距离。开启深度检测后,在指定距离内的图标将不再受深度的影响而显示,当设置为0时表示深度测试一直会起作用,当设置为无穷大时表示深度测试不起效; |
[options.nearFar] | Number |
[0.0,Number.MAX_VALUE] |
面和线对象可见的范围,默认所有地球范围可见; |
[options.show] | Boolean |
true |
是否显示,默认为true,即显示; |
[options.showPolygon] | Boolean |
false |
是否添加多边形,若为false则会将多边形从Entity中移除,同时多边形的label也不会显示; |
[options.color] | String |
"#ffffff" |
填充色,可以是#rgb, #rrggbb, rgb(), rgba(), hsl(), 或者hsla()格式的CSS颜色; |
[options.showDynamicColorPolygon] | Boolean |
false |
当showPolygon=true时,是否随机渲染多边形面颜色,对于面数据有效,设置后会覆盖color的设置; |
[options.colorField] | String |
当showPolygon=true时,面拉伸后颜色字段,来源于geojson数据的拉伸颜色字段,可以是 #rrggbb, rgb(), rgba()格式的CSS颜色,设置后会覆盖color和showDynamicColorPolygon的设置(适用于包含多个面要素的矢量数据); |
|
[options.extrudedHeightField] | String |
当showPolygon=true时,面拉伸高度字段,来源于geojson数据的拉伸高度字段; |
|
[options.loaded] | Resource |
用于回调函数中,返回当前获取的json资源。 |
|
[markerSize] | Number |
48 |
点要素图标的大小 |
[markerSymbol] | String |
点要素图标的符号名称,符号名称请参考MAKI |
|
[markerColor] | String |
"#4169E1" |
点要素图标的颜色 |
Example
let params={
url:'https://bosgeo.boswinner.com/geoData/geojson/us_states.topojson',
name:'json1',
zoomToTarget:true,
}
let jsonSource = geoJsonLayer.add(params)
1.3.2. geoJsonLayer.getJSONByName(name)
根据名称获取GeoJsonDataSource对象
Param | Type | Description |
---|---|---|
name | String |
对象名称 |
1.3.3. geoJsonLayer.zoomTo(dataSource)
缩放至geojson
Param | Type | Description |
---|---|---|
dataSource | DataSource |
数据源对象 |
1.3.4. geoJsonLayer.zoomToLayer()
缩放至图层
1.3.5. geoJsonLayer.zoomToByName(name)
缩放至geojson By name
Param | Type | Description |
---|---|---|
name | String |
数据名 |
1.3.6. geoJsonLayer.updateImageMaterial(imgUrl)
更新面图形的图片材质
Param | Type | Description |
---|---|---|
imgUrl | String |
图片地址 |
1.3.7. geoJsonLayer.remove(dataSource)
移除geojson数据
Param | Type | Description |
---|---|---|
dataSource | DataSource |
数据源对象 |
1.3.8. geoJsonLayer.removeByName(name)
移除geojson数据
Param | Type | Description |
---|---|---|
name | String |
数据名 |
1.3.9. geoJsonLayer.removeAll()
移除全部json