utils/Type.js

/**
 * 3D笛卡尔点
 * @typedef Cartesian3
 * @property {Number} x The X component
 * @property {Number} y The Y component
 * @property {Number} z The Z component
 */

/**
 * 2D笛卡尔点
 * @typedef Cartesian2
 * @property {Number} x The X component
 * @property {Number} y The Y component
 */

/**
 * 弧度坐标点
 * @property {Number} longitude  The longitude, in radians.
 * @typedef Cartographic
 * @property {Number} latitude  The latitude, in radians.
 * @property {Number} height  The height, in meters, above the ellipsoid.
 */

/**
 * 2D WGS84坐标点
 * @typedef DegreePos
 * @property {Number} x 经度X
 * @property {Number} y 纬度y
 */

/**
 * 3D WGS84坐标点
 * @typedef DegreePosZ
 * @property {Number} x 经度X
 * @property {Number} y 纬度y
 * @property {Number} z 高度z,单位米
 */

/**
 * 体积量测结果.
 * @typedef VolumeRes
 * @property {boolean} minH - 区域高程最高值,单位:米(m)
 * @property {boolean} maxH - 区域高程最低值,单位:米(m)
 * @property {boolean} volume - 体积值,单位:立方米(m³)
 */

/**
 * 多联级样式参数
 * @typedef StyleFilter
 * @property {String} key - 筛选条件关键词,将根据选择的字段关键字进行组合,比如图层所选关键字为"age",当前key设定为">10&&<30",则最终筛选条件为"age>10&&age<30"
 * @property {BillboardOption | PolylineOption | PolygonOption} value - 样式参数,需根据图层类型不同选择
 */

/**
 * 点参数
 * @typedef PointOption
 * @property {String} [color='#ff0000'] - 可选:点颜色,默认值 #ff0000
 * @property {Number} [pixelSize=10.0] - 可选:点大小,默认值10.0
 * @property {String} [outlineColor='#ffff00'] - 可选:轮廓线颜色,默认值 #ffff00
 * @property {Number} [outlineWidth=3.0] - 可选:轮廓线宽度,默认值3.0
 * @property {Number} [onGround=true] - 可选:是否贴地,默认自动贴地
 */

/**
 * 广告版参数
 * @typedef BillboardOption
 * @property {Number} [scale=1.0] - 可选:放大倍比,默认1.0
 * @property {Number} [width=64] - 可选:图标宽度,默认64px
 * @property {Number} [height=64] - 可选:图标高度,默认64px
 * @property {Boolean} [onGround=true] - 可选:是否贴地,默认自动贴地
 * @property {String | HTMLCanvasElement} [image] - 广告版图标路径
 * @property {Object} [style=null] - 多联级样式设置参数
 * @property {String} style.key - 设定关键字,将根据选择的关键字来对Geojson图层分类并分别进行样式设置
 * @property {Array<StyleFilter>} style.filter - 图层筛选和自定义样式条件
 */

/**
 * Polyline线参数
 * @typedef PolylineOption
 * @property {Number} [width=5.0] - 可选:线段宽度,默认5.0
 * @property {String} [color='#ffff00'] - 可选:线段颜色,默认为 #ffff00
 * @property {Boolean} [onGround=true] - 可选:是否贴地,默认自动贴地
 * @property {Number} [index=2] - 地图场景中,显示层级,值越高显示优先级越高,默认2
 * @property {Object} [style=null] - 多联级样式设置参数
 * @property {String} style.key - 设定关键字,将根据选择的关键字来对Geojson图层分类并分别进行样式设置
 * @property {Array<StyleFilter>} style.filter - 图层筛选和自定义样式条件
 */

/**
 * Polygon面参数
 * @typedef PolygonOption
 * @property {String} [fill='#65df43'] - 可选:面填充颜色,默认 #65df43
 * @property {Boolean} [outline=true] - 可选:是否显示轮廓线,默认为true
 * @property {String} [outlineColor='#fff000'] - 可选:只有在outline=true时生效,轮廓线颜色,默认为 #fff000
 * @property {Number} [outlineWidth=1.0] - 可选:只有在outline=true时生效,轮廓线宽度,默认1.0
 * @property {Boolean} [onGround=true] - 可选:是否贴地,默认自动贴地
 * @property {Number} [index=1] - 地图场景中,显示层级,值越高显示优先级越高,默认1
 * @property {Object} [style=null] - 多联级样式设置参数
 * @property {String} style.key - 设定关键字,将根据选择的关键字来对Geojson图层分类并分别进行样式设置
 * @property {Array<StyleFilter>} style.filter - 图层筛选和自定义样式条件
 */

/**
 * GLTF模型参数
 * @typedef GltfOption
 * @property {Number} [scale=1.0] - 可选:模型放大倍比,默认1.0
 * @property {Boolean} [shadow=true] - 可选:模型是否支持阴影效果,默认true
 * @property {Boolean} [onGround=false] - 可选:模型是否贴地,默认自动贴地
 * @property {Number} [heading=0.0] - 可选:模型角度heading值,默认0.0,单位:度
 * @property {Number} [pitch=0.0] - 可选:模型角度pitch值,默认0.0,单位:度
 * @property {Number} [roll=0.0] - 可选:模型角度roll值,默认0.0,单位:度
 */

/**
 * 相机状态参数
 * @typedef CameraStatus
 * @property {DegreePosZ} degrees - WGS84坐标值
 * @property {Cartesian3} position - 笛卡尔坐标值
 * @property {Object} hpr - 欧拉角
 * @property {Number} hpr.heading - 偏航角,绕Z周
 * @property {Number} hpr.pitch - 俯仰角,绕Y轴
 * @property {Number} hpr.roll - 滚动角,绕X轴
 */

/**
 * 地图四至对象,WGS84坐标
 * @typedef ViewExtent
 * @property {Number} minx - 最小经度值
 * @property {Number} miny - 最小纬度值
 * @property {Number} maxx - 最大经度值
 * @property {Number} maxy - 最大纬度值
 */

/**
 * 视角参数
 * @typedef ViewStatus
 * @property {Cartesian3 | DegreePosZ} position - 笛卡尔坐标值
 * @property {Object} hpr - 欧拉角
 * @property {Number} hpr.heading - 偏航角,绕Z周,单位为弧度或者度
 * @property {Number} hpr.pitch - 俯仰角,绕Y轴,单位为弧度或者度
 * @property {Number} hpr.roll - 滚动角,绕X轴,单位为弧度或者度
 */

/**
 * 标绘-点类-参数
 * @typedef PlotPoint
 * @property {String} [color='#ff0000'] - 点颜色,默认值 #ff0000
 * @property {Number} [pixelSize=20.0] - 点大小,默认值20.0
 * @property {String} [outlineColor='#ffff00'] - 轮廓线颜色,默认值 #ffff00
 * @property {Number} [outlineWidth=3.0] - 轮廓线宽度,默认值3.0
 */

/**
 * 标绘-广告版-参数
 * @typedef PlotBillboard
 * @property {String | HTMLCanvasElement} [image] - 广告版图标image
 * @property {Number} [scale=1.0] - 缩放倍比,默认值1.0
 */

/**
 * 标绘-折线类-参数
 * @typedef PlotPolyline
 * @property {String} [color='#FF0000'] - 线段颜色,默认值 #FF0000
 * @property {Number} [width=10.0] - 线宽度,默认值10.0
 */

/**
 * 标绘-阵型类-参数
 * @typedef PlotFormation
 * @property {Number} [geo=1] - 阵型类型,0-防御阵型,1-进攻阵型
 * @property {String} [color='#FF0000'] - 线段颜色,默认值 #FF0000
 * @property {Number} [width=10.0] - 线宽度,默认值10.0
 */

/**
 * 标绘-多边形类-参数
 * @typedef PlotPolygon
 * @property {String} [fill='#FF0000'] - 填充颜色,默认值 #FF0000
 * @property {Boolean} [outline=true] - 是否显示轮廓线,默认显示
 * @property {String} [outlineColor='#FFFF00'] - 轮廓线颜色,仅outline=true时生效,默认值 #FFFF00
 * @property {Number} [outlineWidth=10.0] - 轮廓线宽度,仅outline=true时生效,默认值10.0
 * @property {Number} [counts=5] - 仅在绘制正多边形时有效,代表正多边形边的数量
 */

/**
 * 标绘-旗标类-参数
 * @typedef PlotFlag
 * @property {Number} geo - 旗标类型,对应关系:0-曲线旗标;1-矩形旗标;2-正三角旗标;3-倒三角旗标;4-对三角旗标。
 * @property {String} [fill='#FF0000'] - 填充颜色,默认值 #FF0000
 * @property {Boolean} [outline=true] - 是否显示轮廓线,默认显示
 * @property {String} [outlineColor='#FFFF00'] - 轮廓线颜色,仅outline=true时生效,默认值 #FFFF00
 * @property {Number} [outlineWidth=10.0] - 轮廓线宽度,仅outline=true时生效,默认值10.0
 */

/**
 * 标绘-简单颜色类-参数
 * @typedef PlotColor
 * @property {String} [color='#FF0000'] - 填充颜色,默认值 #FF0000
 */

/**
 * 标绘-箭头类-参数
 * @typedef PlotArrow
 * @property {Number} geo - 箭头类型,对应关系:0-平尾,1-燕尾。
 * @property {String} [fill='#FF0000'] - 填充颜色,默认值 #FF0000
 * @property {Boolean} [outline=true] - 是否显示轮廓线,默认显示
 * @property {String} [outlineColor='#FFFF00'] - 轮廓线颜色,仅outline=true时生效,默认值 #FFFF00
 * @property {Number} [outlineWidth=10.0] - 轮廓线宽度,仅outline=true时生效,默认值10.0
 */

/**
 * 标绘-文本类-参数
 * @typedef PlotLabel
 * @property {String} [color='#FFFFFF'] - 文本填充色,默认值 #FFFFFF
 * @property {Number} [size=32] - 文本字体大小,默认值 32
 * @property {String} [text='undefined'] - 文本内容,默认值 undefined
 * @property {Boolean} [outline=false] - 是否显示文本轮廓,默认不显示
 * @property {String} [outlineColor='#000'] - 文本轮廓颜色,默认值 #000000
 * @property {Number} [outlineWidth=0] - 文本轮廓宽度,默认值 0
 */

/**
 * LngLat坐标类型
 * @typedef LngLat
 * @property {Number} lng - 经度坐标
 * @property {Number} lat - 纬度坐标
 */

/**
 * 水枪粒子参数
 * @typedef WaterGunOption
 * @property {Number} [angle=30] 喷射角度,以垂直于底面位0°,单位:度(°)
 * @property {Number} gravity 重力系数,控制水枪喷射过程水粒子下降程度,默认计算值为(-2.0 * dis) / (pos0.z - pos1.z)
 * @property {Number} speed 喷射速度,默认计算值为Math.ceil(dis / 5)
 */

/**
 * 行政区划对象
 * @typedef RegionCode
 * @property {string} label 地区名称
 * @property {string} value 区划编码
 * @property {Array<RegionCode>} children 子级行政区划对象
 */

/**
 * 高德路径规划返回对象
 * @typedef PathAnalysisGD
 * @property {LngLat} origin 起始点位置,WGS84坐标
 * @property {LngLat} destination 终点位置,WGS84坐标
 * @property {Array<PathGD>} paths 路线集合
 */

/**
 * 高德路径规划路线
 * @typedef PathGD
 * @property {Number} distance 距离,单位:米(m)
 * @property {Number} duration 用时,单位:秒(s)
 * @property {Array<StepGD>} steps 路线分段
 */

/**
 * 高德路径规划路线分段
 * @typedef StepGD
 * @property {Number} distance 距离,单位:米(m)
 * @property {Number} duration 用时,单位:秒(s)
 * @property {String} instruction 行驶指示
 * @property {String} orientation 进入道路方向
 * @property {String} road_name 分段道路名称
 * @property {Array<TmcGD>} tmcs 分段路况详情
 */

/**
 * 高德路径规划路线分段路况
 * @typedef TmcGD
 * @property {Number} tmc_distance 从当前坐标点开始step中路况相同的距离
 * @property {String} tmc_status 路况信息,包括:未知、畅通、缓行、拥堵、严重拥堵
 * @property {Array<LngLat>} tmc_polyline 此段路况涉及的道路坐标集合,WGS84坐标系
 */

/**
 * 高德POI搜索条件参数
 * @typedef PoiGdParams
 * @property {String} region 限制返回数据在区域内,默认全国范围搜索。行政区划编码或者名称,如"北京市","110000"。
 * @property {Number} [count=20] 返回结果数量
 */

/**
 * 高德POI搜索结果对象
 * @typedef PoiResultGd
 * @property {String} address poi详细地址
 * @property {String} adname poi所属区县
 * @property {String} cityname poi所属城市
 * @property {String} pname poi所属省份
 * @property {String} name poi名称
 * @property {String} type poi所属类型
 * @property {LngLat} location poi经纬度坐标,WGS84坐标
 */

/**
 * 高德地理编码结果
 * @typedef GeocodeGd
 * @property {String} province 地址所在的省份名
 * @property {String} city 地址所在的城市名
 * @property {String} district 地址所在的区
 * @property {String} street 街道
 * @property {String} number 门牌
 * @property {LngLat} location 坐标点位置,WGS84坐标
 */

/**
 * 高德逆地理编码结果
 * @typedef ReGeocodeGd
 * @property {String} province 坐标点所在的省份名
 * @property {String} city 坐标点所在的城市名
 * @property {String} district 坐标点所在的区
 * @property {String} township 坐标点所在乡镇/街道
 * @property {String} address 坐标点格式化地址
 */

/**
 * 热力图数据类型
 * @typedef HeatmapDatas
 * @property {Array<Number>} lnglat 经纬度坐标,WGS84坐标系,如:[120,35]
 * @property {Number} value 热力值,用于绘制热力图的数值
 */

/**
 * 热力图参数
 * @typedef HeatmapOptions
 * @property {Number} [radius=10] 可选 热力图绘制半径,参考值
 * @property {Object} [gradient={ '.3': 'blue', '.5': 'green', '.7': 'yellow', '.95': 'red'}] 热力图配色梯度值,key为递变百分比位置,值为颜色值,如"red","#ff0000"
 * @property {Number} [baseHeight=0] 可选,基准高度,仅限于3D热力图生效
 * @property {String} [primitiveType='TRIANGLES'] 可选,热力图形式,仅限于3D热力图生效。"TRIANGLES"-三角形基元,其中每个三个顶点(或索引)是一个三角形。三角形不一定共享边;"LINES"-线基元,其中每个两个顶点(或索引)都是一个线段。线段不一定连接。
 */

/**
 * DOM跟随对象参数
 * @typedef DomOptions
 * @property {Cartesian2} [offset={x:0,y:0}] 视角偏移
 * @property {Number} [maxHeight=50000000] 最高可视距离,指的是相机距离,超过该距离元素就被隐藏
 */

/**
 * 热点面板参数
 * @typedef PanelOptions
 * @property {String} id 热点面板ID,具有唯一性
 * @property {Cartesian3} position 热点面板空间位置,笛卡尔坐标
 * @property {String} text 热点面板内容
 * @property {Number} maxHeight 热点面板最大可视距离,超过该距离将移除
 * @property {String} [type='hot'] 热点面板类型。'hot'-普通热点面板;'process'-进度热点面板
 */

/**
 * 体元栅格数据参数(三维)
 * @typedef VoxelsData
 * @property {Number} x 经度值,WGS84坐标
 * @property {Number} y 纬度值,WGS84坐标
 * @property {Number} z 高度值,建议海拔高度
 * @property {Number} value 待计算体元值
 */

/**
 * Geoserver发布的WMTS数据参数
 * @typedef GeoserverWmtsOptions
 * @property {String} [id] 唯一标识ID
 * @property {String} layer 图层名称
 * @property {String} sourceUrl geoserver发布wmts的根地址,如:https://ip:port/geoserver/gwc/service/wmts/rest,可以在geoserver首页查询
 * @property {String} [style=''] 数据样式
 * @property {String} [format='image/png'] 瓦片格式类型
 * @property {String} [tileMatrixSetID='EPSG:4326'] 坐标系
 * @property {Number} [maximumLevel=20] 最大显示层级
 * @property {Number} [alpha=1.0] 透明度
 */

/**
 * Mapbox切片服务参数
 * @typedef MapboxOption
 * @property {String} userName 用户名
 * @property {String} styleId 图层样式唯一ID
 * @property {String} token token指令
 */