高配版地图渲染库
- 地图渲染库是由海康威视–空间技术组精心打造的一款时空数据表达API。该库运行在浏览器中,基于WebGL2.0渲染,面向开发者开放JavaScript接口。库广泛吸收了各种前沿技术及理念,在提供丰富的二次开发接口的同时,大幅提升了交互与视觉体验。本着更轻、更快、更易用的原则,我们在版本迭代过程中越来越重视版本之间的兼容性,以期开发者无成本升级地图应用。
运行要求
客户端显卡配置
不涉及实景三维仿真三维等地图渲染时,显卡配置不低于以下型号:
屏幕分辨率 | 最低配置 |
---|---|
2K | * NVIDIA GeForce GTX 1660 Super |
在需要渲染实景三维和仿真三维数据时,高配渲染库的显卡配置建议如下:
屏幕分辨率 | 最低配置 | 推荐型号 |
---|---|---|
2K | * NVIDIA GeForce RTX 3060 12GB * NVIDIA GeForce GTX TITAN Xp 12GB Pascal * NVIDIA GeForce GTX 1080 Ti NVIDIA GeForce RTX 4060 AMD Radeon RX 6650XT |
* NVIDIA RTX A4000 NVIDIA GeForce RTX 2080 Super NVIDIA GeForce RTX 3060 Ti GDDR6X AMD Radeon RX 6700XT AMD Radeon RX 6750XT |
4K | NVIDIA GeForce RTX 3080Ti NVIDIA GeForce RTX 3090 AMD Radeon RX 6800XT |
NVIDIA GeForce RTX 3090Ti NVIDIA GeForce RTX 4070Ti AMD Radeon RX 6900XT AMD Radeon RX 6950XT |
⚠注意:型号前有*号的为截至2023年10月在公司物料清单的型号
⚠建议:检查你的显卡驱动程序,建议升级到最新版本;如果是其它类型的显卡,请确保其支持OpenGL 3.3或以上。
客户端操作系统
正版Windows7 64Bit、正版Windows10 64Bit。盗版系统或32位存在不可预测的风险,不推荐使用。
客户端浏览器
推荐64位Chrome浏览器,浏览器版本最低为90,建议更新至最新版。
空间信息服务平台4.1更新说明
不兼容项
- 将S3MLayer和H3SLayer的初始化参数waterHeight单位由地图单位调整为米
- 文字背景默认不支持圆角、描边宽度、描边颜色属性,背景建议使用图片。如需开启圆角、描边宽度、描边颜色属性支持,需要在TextSymbol构造时将drawComplex选项设置为true
- 三角形和多边形的面积计算结果返回值调整为平方米
- 废弃 Map.flyTo 方法,建议使用ViewTrackControl
- 废弃SuperClusterLayer,ClusterLayer采用SuperClusterLayer的实现
- 废弃 S3M/3DTiles 下 setHighlightFromGeometry 方法,使用addHighlight方法代替
- 废弃 TextSymbol 构造函数的 textAlign 属性,使用新增的 textAlignment 属性代替
- 废弃 TextSymbol 的 getTextAlign、setTextAlign 方法,使用 getTextAlignment、setTextAlignment 方法替代
- 废弃指北针控件的 updateStyle 方法
新增
- VectorTileLayer支持高架抬升效果
- 矢量图层和地理解决方案图层添加layerExtent属性的支持。设置该属性后,图层将仅允许添加layerExtent范围内的数据;当图层的static为false时,会根据可视区间内是否包含动画数据确定图层对地图的不断重绘的影响
- 新增自定义矢量切片线拉高和面拉高的支持
- 新增 MeshLayer 管道流动效果,可以在 MeshLayer 的 TubeMesh 对象的表面上添加移动的图标(箭头),以展示管道的流向
- 新增点图层、线图层、面图层,相对于几何类型混合存储的VectorLayer具有更高的性能,且支持更为精简的样式设置
- 新增Extent.expand()方法,将地理范围的长和宽扩展为原来的指定倍数
- 自定义矢量切片线要素的缓冲模式支持从要素属性中读取半径和壁厚
- 新增Plot控件删除节点的功能,在编辑状态下,右键点击节点位置可删除节点
- 新增地形图层(TerrainLayer、HRTELayer)与相机的碰撞检测支持,通过图层初始化参数 checkCameraCollisions(开启碰撞检测)、collisionHeight(设置高度阈值) 进行设置
- 在支持贴地的图层中新增 clampToGround 访问器,用于设置是否贴地,适用于 VectorLayer、VectorTileBinLayer、VectorTileJSONLayer、HVTTLayer、GeosolutionLayer、FGBVectorlayer
- ElewallModel的初始化选项中新增 depthWrite 属性,用于控制电子墙深度写入,可改善电子墙透明的情况下电子墙本身的遮挡问题
- 新增图层初始化参数 inverseZ,用于控制地图对象的 getHeightByCoord 方法时,指定图层是否用于反算世界坐标,默认关闭的图层有 VectorLayer、FGBVectorLayer、PointLayer、LineLayer、PolygonLayer,其他图层默认开启
- 新增地图长度单位设置,initState.linearUnit设置为'meter'时,通过接口设置的长度或高度都以米为单位
- 扩展集合体新增 getExtent 方法,当前 Vector#getExtent 支持所有类型的几何体
- Layer 图层构造方法中新增 minVisibleZoom、maxVisibleZoom 可选项及对应的 set 和 get 方法,以实现图层在指定层级区间显示
- 扩散圆和填充圆支持设置尺寸单位,可通过SpreadCircleModel和FilledCircleModel构造函数的sizeUnit选项设置
- 聚合图层新增Web墨卡托坐标系支持
- VectorTileLayer、VectorTileJSONLayer、VectorTileBinLayer增加EventType.VECTORTILE_SKYLOADED事件,图层加载天空盒样式后触发该事件
- 优化在三维场景中的缩放速度,地图相机距离物体越近,缩放越慢,缓解相机穿模问题
- S3MLayer 中新增 getRGBToBGR 和 setRGBToBGR 接口,用于获取和设置将纹理数据采样颜色结果的 RGB 转成 BGR
- S3MLayer 中新增 getRangeRatio 和 setRangeRatio 接口,用于获取和设置图层加载参数
- 新增 S3M/3DTiles 单体化支持多个高亮状态,原有接口 setHighlightFromGeometry 废弃
- 新增 S3M 图层获取数据范围接口 getExtent
- TextSymbol 的构造函数新增 textAlignment 属性,原有 textAlign 属性标记废弃,同时新增 getTextAlignment、setTextAlignment 方法,原有 getTextAlign、setTextAlign 方法标记废弃
- Map 构造函数新增 scaledWithDOM 属性,支持地图根据 css 样式的 transform:scale()按比例缩放
- 新增 TraceReplay#denoise 方法,当轨迹类 options 中 mode 为'time'时,剔除移动速度过高的路径点,实现对点位的去噪
- 新增 TraceReplay#zoomToExt 方法,可以将地图缩放至当前轨迹范围
- 新增 S3M 图层获取数据范围接口 getExtent
- 缩放控件 Zoom 新增 setTouchMinDistance 方法,设置触发缩放的双指间移动间距(适配移动端)
- 交通路况服务服务图层渲染支持高程值渲染
- 图层贴地功能中,新增了贴地模式设置,有纹理模式和高度模式可选,当前支持贴地模式设置的图层有 VectorLayer、VectorTileBinLayer、VectorTileJSONLayer、HVTTLayer
- 图层贴地功能中,新增了将 TMSLayer、VectorTileJSONLayer 作为三维基础底图,通过构造参数 baseGroundLayer 设置
- FlatGeoBuffer矢量图层(FGBVectorLayer的子类)支持贴地绘制
- control.Plot 新增 enable3dPlot 和 disable3dPlot 方法,用于开启和关闭三维标绘
- 图层基类 layer.Layer 中新增 depthTest 的 get 和 set 方法,用于动态设置图层深度,可直接通过 layer 实例的 depthTest 属性修改
- HVTTLayer拾取到的要素增加 name(名称)和 state(路况)属性
- 新增部分控件的样式配置方法:指北针控件/鹰眼地图控件/鼠标位置控件/鼠标提示控件/比例尺控件增加样式配置方法。
- 新增文字样式固定行宽的可选项
- 新增Map.detectAllFeaturesAtPixel接口,可以拾取矢量图层中重叠的多个要素
- 新增矢量楼块图各要素显示层级的设置
- 新增矢量楼块图园区和楼栋的起始高度 z 值设置
- 在网格图层(GridLayer)中新增设置和获取是否显示网格图层行列号的setShowTileRowCol和getShowTileRowCol方法
优化
- 优化点的渲染逻辑,同一个点的文字和图标成对渲染,解决所有点的文字压盖在点的图标上的问题
- 优化S3M压缩纹理的处理逻辑,提升渲染性能
- 优化矢量瓦片类图层文字图集,多个图层使用同一图集时共享图集数据,在减少重复请求的同时降低内存占用
- 优化地理解决方案的解析机制,降低卡顿几率,优化后无需调用MathModel子类的updateDrawData和地理解决方案图层的redraw方法
- 优化文字背景设置,缓解在文字背景种类过多时图集撑爆的问题
- 优化矢量图层避让属性打开时,浏览地图时的避让效果,减轻闪烁现象
- 优化聚合图层底层逻辑,提升聚合性能
- 调整平移控件的速度,以鼠标位置点,计算拖动一个像素对应的距离
- 调整旋转控件的旋转中心点,以鼠标位置点进行旋转
- 提升 GridLayer 子类在开启 IndexedDB 情况下的整体性能
- 优化矢量图层避让策略,先避让再渲染,防止渲染过程中已经绘制的要素在渲染过程中消失
- 优化点样式中既有图标又有文字时的避让效果
- 优化文字圆角背景和图片背景支持
- 优化拉框放大控件的动效
- 优化 TMSLayer 等格网图层加载、显示策略,减少地图空白区域出现时间
- S3MLayer性能优化和部分调整: 新增RGBToBGR参数用于将将纹理RGB颜色转换成BGR; 新增useSpatialIndex参数,用于在空信平台4.0对应的S3MB3.0数据中开启空间索引,加快索引速度;新增skipFactor参数,在使用空间索引后,可以定义此参数用于跳过部分加载细节
- S3MLayer 性能优化和部分调整: 新增 RGBToBGR 参数用于将将纹理 RGB 颜色转换成 BGR; 新增 useSpatialIndex 参数,用于在对应的 S3MB3.0 数据中开启空间索引,加快索引速度;新增 skipFactor 参数,在使用空间索引后,可以定义此参数用于跳过部分加载细节
- 优化地图拾取容差值大于1时的性能
修复
- 轨迹类中,修复图标角度显示错误的问题;修复按照索引重新播放时节点显示错误的问题
- 修复移动端地图平移操作不灵敏的问题
- 修复地图容器外层 div 采用 scale 样式后,拉框放大位置和地图中心点位置不对的问题
- 修复 Overlay 在画布缩放时弹框的位置偏移的问题
- 修复 Overlay 类下的 getLocation 方法返回错误的问题
- 修复 Overlay 在 window.devicePixelRatio 不为 1 时,弹窗 offset 偏移效果不同的问题
- 修复地图 MouseTipControl 提示窗在 div 采用 scale 缩放之后导致 position 定位不准确的问题
- 修复VectorLayer、VectorTileBinLayer、VectorTileJSONLayer图层首次加载时,天空盒子不显示的问题
- 修复ClusterLayer图层,removeAllFeatures之后, 移动或缩放地图,会自动把Features又添加上的问题
- 修复地图初始化后,获取到的地图中心点与初始值有偏移的问题
- 修复地形地貌图层在数据中没有法向量时,光照失效的问题
- 修复白模Strech.getFeaturesByAttribute()报错的问题
- 修复矢量要素图层在添加字体图标(IconFont)后,从矢量图层中获取不到添加的矢量要素的问题
- 修复GridLayer开启显示行列号选项且瓦片原点不是默认值时,行列号显示错误的问题
- 修复OverlayLayer在多次初始化后达到Overlay数量的400上限问题
- 修复测量控件设置样式报错的问题
- 修复在绘制多个几何类型为Point的要素时,且使用的MarkerSymbol都为Circle,在颜色的RGB分量都相同而透明度不同时,透明度失效问题
- 修复测量控件测量面积时偶现的误判为自相交的问题
- 修复三维文字平移、缩放和旋转的实际变换顺序和设置顺序相反的问题
- 修复地理解决方案数学模型(MathModel)销毁后再无法创建的问题
- 修复地理解决方案中图层设置为静态时,MathModel仍然以动画形式绘制的问题
- 修复蝌蚪线在节点较多时,渲染混乱的问题
- 修复可视域添加到第 4 个时,第一个可视域分析结果改变的问题
- 修复点要素的 IconFont 和 TextSymbol 样式共存时,无法同时渲染的问题
- 修复 TextSymbol 同时设置 rotaion 和 offset 时渲染效果错误的问题
- 修复TextSymbol在同时设置rotation、padding、paddingLeft/paddingRight/paddingTop/paddingBottom时,内边距样式错误的问题
- 修复 getHeightByCoord 方法在的场景中没有数据位置返回错误高度的问题,没有数据的位置返回null
- 修复拾取顺序和绘制顺序不一致的问题
- 修复风场不支持区域(非全球)数据的问题
- 修复雪碧图样式透明度不正确的问题
- 修复FieldLayer、ShadowQueryModel、SkylineModel、EarchworkVolumeModel、ProfileAnalysisModel销毁时报错的问题
- 修复 Plot 控件在标绘或编辑结束时,鼠标在地图边缘仍然会使地图视图移动的问题
- 修复无法绘制携带 Unlit 扩展的 glTF 模型的问题
- 修复聚合图层拖动闪烁问题
- 修复控件移除后调用deactivate报错问题
- 修复SpreadCircle在开启isRTE情况下绘制异常,修复SpreadCircle在销毁后重新创建时报错问题
- 修复矢量要素IconFont样式中文字无法显示的问题
- 修复指北针样式中错误的.right类作用域的问题
- 修复Web墨卡托和地理坐标系下,使用测量控件进行面积测量时结果偏大的问题
- 修复Web墨卡托坐标系下,使用标绘控件绘制圆时控制点不在圆边界上的问题
- 修复调用VectorLayer.getExtent以后,第一个要素中Geeometry的Extent变大的问题
- 修复聚合图层调用removeFeatures报错的问题
- 修复TMSLayer在从较大的底图层级缩放到低地图层级时,高层级的瓦片内容没有清除的问题
- 修复在Style中未传入Vector所需的Symbol时报错的问题,此时采用默认样式进行渲染,如果所需的Symbol为null或空数组仍会报错
- 修复在浏览器字体缩放情况下,比例尺ScaleBar不随之发生变化的问题
- 修复在移动有高程的三维图层时,地图移动与鼠标不同步的问题
- 修复压缩纹理解析库的加载方式为按需加载
- 修复多边形 toArray 方法中索引问题导致的结果错误
- 修复多边形视频填充在面垂直于地面的情况下纹理显示错误的问题
- 修复了 S3MLayer 当数据中有纹理和颜色同时存在时,无法正常显示的缺陷
- 修复 SimplePopup的锚点不在左上角时,从默认左上角飞到设置的锚点位置的缺陷
- 修复电子墙在 Web 墨卡托坐标系下渲染不出来的问题
- 修复各样式 clone 时丢失部分属性的缺陷
- 修复 geomext 模块中部分子模块缺失 clone、applyTransform、getCtrlPoints 方法的问题
- 修复 TraceReplay 重新设置轨迹时不会覆盖之前轨迹的缺陷
- 修复实时路况图层 dataMaxLevel 不生效的问题
- 修复 Web 墨卡托坐标系下圆的半径长度比实际距离小的问题
- 修复 Web 墨卡托坐标系下比例尺长度比实际距离小的问题
- 修复瓦片图层在没有移动视图时不停重绘的问题
- 修复矢量图层在开启贴地绘制时,点在避让过程出现闪烁、循环绘制的问题
- 修复 TMSLayer 在初始化、缩放地图层级时,有一定几率瓦片边缘会存在缺失,移动或点击地图可恢复正常的问题
- 修复初始化 OverlayLayer 图层后,双击地图出现无法拖动地图问题
- 修复超高分屏幕下,地图文字图集被撑爆的问题
- 修复 DragZoom 样式丢失的缺陷
- 修复 Overlay 的容器具有 transform:scale 样式时,图标位置不正常的问题
- 修复 Polygon.isSelfIntersects 自相交判断错误的问题
- 修复加载实景三维模型后,测距和测面积时绘制的图形被遮挡的问题(需要关闭深度测试)
- 修复在地图倾斜时,Map.getCoordinateFromPixel 获取距离相机较远位置的坐标具有微小误差值的问题
- 修复 HVTB 瓦片之间显示有间隙的问题
- 修复 HRTELayer 在高级别出现断崖的问题
- 修复 FillSymbols 方法中 setOffset 中 offset 的判断缺陷
- 修复在使用 VectorLayer.setStyle 方法更新样式时,无法更新设置为空或者长度为 0 的 MarkerSymbol/LineSymbol/FillSymbol/TextSymbol 符号数组的问题
- 修复矢量切片图层无法兼容旧版本样式中 chars.png 纹理图片,从而造成文字显示混乱的问题
- 修复文字样式克隆后边框样式丢失问题
- 修复不同文字样式边框渲染相同的问题
- 修复不同行数文字样式设置相同 anchor 时起点不一致问题
- 修复 SimplePopup 中 positioning 设置失效问题
- 修复弹窗中删除文字时,在没有文字以后继续按 backspace 键会移除 canvas HTML 元素的缺陷
- 修复在两个点击事件回调函数中拾取两个矢量图层得要素时,其中一个回调的拾取方法失效的问题
- 修复切片图层在高层级下切片之间有缝隙的问题
- 修复鼠标拖动在大于 21 级时,地图移动距离大于鼠标距离的缺陷
- 修复Plot控件中多点绘制节点回退时的顺序错误
- 修复文字背景边框错误使用文字描边宽度的问题
- 修复Tile3DLayer设置三维基础图层时,报错的问题
- 修复矢量图层中线面背面剔除状态失效的问题
- 修复移动端矢量切片图层中文字不显示的问题
- 修复调用getLayersByName接口时获取不到叠加物图层的问题
示例
- 新增示例缩略图的New标记功能,便于识别新增项或变更项
- 新增基础API-距离和高度单位设置
- 新增基础API-线样式-抗锯齿
- 新增基础API-天空盒背景
- 新增基础API-标绘-贴地
- 新增基础API-使用比例尺数组初始化WMTS图层
- 新增基础API-使用比例尺请求参数的栅格切片图层
- 新增基础API-集束式-倾斜摄影
- 新增基础API-自定义模型-管道流向
- 新增基础API-自定义矢量切片图层-三维管道
- 新增基础API-全屏下雪
- 新增基础API-全屏下雨
- 新增基础API-按长度比例取坐标的示例
- 新增基础API-基于服务元数据构造S3M图层
- 新增综合案例-贴地图层-区域高亮
- 新增综合案例-热力图贴地
- 优化基础API-深度测试示例和基础API矢量图层贴地-矢量要素示例,将底图换成S3MLayer
- 在基础API-地图打印示例中增加打印的要素,并将示例重命名为“导出图片”
- 修复WMTS图层相关示例中,WMTSLayer使用的地址加载不到瓦片的问题
- 在所有具有天空盒选择的示例中增加乌云天空盒
- 删除FlatGeoBuf点图层、FlatGeoBuf线图层、FlatGeoBuf面图层的示例
HMap地图渲染库功能简要说明如下:
模块 | 命名空间 | 功能说明 |
---|---|---|
初始状态 | hmap.initState | 地图hmap的初始化属性,包括版本、语言、精度阈值等。 |
基础类 | hmap.basetype | 定义了一些基础类型,包括地理坐标、坐标序列、边界盒、偏移量、像素、大小等。 |
控件 | hmap.control | 该包中定义了地图控件,该包中定义了地图控件,用以控制地图行为、状态、属性。 |
事件 | hmap.event | 定义了事件及事件管理机制。如图层、地图的鼠标事件 |
矢量要素 | hmap.feature | 定义矢量要素之类的接口,包括点、线、面等 |
数据格式 | hmap.format | 定义了地理数据格式及转换方法,当前支持GeoJSON与WKT定义两种数据格式的转换。 |
帧 | hmap.frame | 作用于屏幕后期的帧,用于实现各种效果 |
几何图形 | hmap.geom | 几何图形的定义与运算。 |
几何图形扩展 | hmap.geomext | 基础几何体(geom命名空间下)的补充实现。 |
通用地理解决方案 | hmap.geosolution | 包含了一些行业无关的表达模型,比如柱状图、流线、蝌蚪线等 |
矢量楼块图 | hmap.indoor | 定义了矢量楼块要素,包括园区、楼栋、楼层、户室,用于绘制编辑、管理维护和展示小范围场景数据 |
图层 | hmap.layer | 含图层基类、矢量图层、WMS/TMS图层、S3M图层、Tile3D图层、Terrain图层、点云图层、Fbx图层、GLTF图层、Mesh图层、聚合策略图层等。提供栅格瓦片、矢量瓦片、倾斜摄影数据、地形数据、常见模型、自定义模型等的渲染 |
光源 | hmap.light | 定义光源类型以及对应接口。 |
材质 | hmap.material | 定义不同材质类型。 |
三维模型 | hmap.model | 该包定义了一些模型解析类。支持解析FBX、glTF、GLB等主流三维格式数据。 |
叠加层 | hmap.overlay | 当前仅支持地图弹框 |
地理坐标系 | hmap.proj | 包含坐标系对象的定义以及不同坐标系坐标之间的转换 |
矢量要素样式 | hmap.style | 样式定义,如点、线、面等符号系统。 |
实用工具类 | hmap.util | 定义了一些常见的数学计算库。 |