원클릭으로
minemap-2d-3d-overlay-and-classification
MineMap 二三维叠加规范。覆盖矢量贴地、贴模型、对象接受/拒绝贴合、symbol 自动赋高、以及 raster 深度测试与图层顺序控制。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
MineMap 二三维叠加规范。覆盖矢量贴地、贴模型、对象接受/拒绝贴合、symbol 自动赋高、以及 raster 深度测试与图层顺序控制。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
MineMap 3D 公告板(Billboard)专题。覆盖 BillboardMaterial / BillboardGeometry / BillboardInstance 动画、拾取高亮、动态纹理更新与轨迹对象联动;不与 DOM 覆盖物 Marker 混淆。
MineMap 云与大气渲染链。用于启用体积云(多层 CloudLayer)、单片实例化云(map.cloudCollection)、大气散射与太阳 / 天空辐照度,重点说明主分支公开参数与禁用字段。
MineMap 事件订阅模型、图层事件代理、once/off 管理、矢量与三维对象拾取。
MineMap 热力图(heatmap)专题。用于二维 / 三维热力图、贴地热力、聚合权重、热力色阶与 3D 显示模式,重点说明 paint/layout 参数边界与典型失败场景。
MineMap KML 数据源。用于加载 KML / KMZ 文件,解析 LineStyle / IconStyle / LabelStyle / PolyStyle 等样式继承,并把 KML 属性映射为 line / circle / fill / symbol 派生图层。
MineMap 材质与着色规范。覆盖 `StandardMaterial`、`PhongMaterial`、`PhysicalMaterial`、`LambertMaterial`、`PolylineMaterial` 等主流材质的选型与调参。
| name | minemap-2d-3d-overlay-and-classification |
| description | MineMap 二三维叠加规范。覆盖矢量贴地、贴模型、对象接受/拒绝贴合、symbol 自动赋高、以及 raster 深度测试与图层顺序控制。 |
map.on("load", () => {
map.addSource("route", {
type: "geojson",
data: routeGeoJSON,
adaptTerrain: true
});
map.addLayer({
id: "route-line",
type: "line",
source: "route",
paint: {
"line-width": 6,
"line-color": "#00ffff"
}
});
map.addLayer(
{
id: "base-raster",
type: "raster",
source: "base-raster",
paint: {
"depth-test": true
}
},
"route-line"
);
});
MineMap 里的二三维叠加不是单一机制,而是四类机制组合:
before / moveLayer(...)source.adaptTerrainprimitive.adaptTerrainclassificationTypeauto-height、auto-height-offset、hiddenType先问清业务目标:
beforeadaptTerrainclassificationTypeauto-height / hiddenTypeFORCE_VECTOR_OVER_MODEL当前版本更推荐在数据源上开启:
GeoJSONSource.adaptTerrain: true这条路径适合:
注意边界:源码注释把这条能力描述为贴 DEM 地形的主路径,不应把它理解成“自动贴 3D Tiles 或 SceneModel 表面”。
如果你不是走 style layer,而是走低层三维对象:
PolylineGeometryPolygonGeometryPrimitive则用:
primitive.adaptTerrain = true源码中 Primitive 在开启 adaptTerrain 时,会自动把 classificationType 处理到贴地所需状态。它更适合:
而不是大批量常规专题面/线渲染。
classificationType 控制二三维叠加不只看发送方,还要看接收方。
关键语义:
minemap.ClassificationType.NONE
minemap.ClassificationType.IGNORECLASSIFICATION
minemap.ClassificationType.FORCE_VECTOR_OVER_MODEL
minemap.ClassificationType.ALL
其中最容易误用的是:
FORCE_VECTOR_OVER_MODEL 解决的是“压模显示”adaptTerrainsymbol 与 line/fill 的思路不同。
围绕三维场景叠加 symbol,常见组合是:
layout["auto-height"] = truelayout["auto-height-offset"] = xxxhiddenType: minemap.SymbolHiddenType.SCENEclassificationType: minemap.ClassificationType.FORCE_VECTOR_OVER_MODEL适用场景:
MineMap demo 已明确暴露两个常见坑:
"depth-test": true,贴地结果会异常因此二三维叠加里,raster 至少要检查:
before 放到了正确位置paint["depth-test"] = true历史上有过直接依赖 layer 级 classificationType 的贴地写法,但当前版本更稳妥的默认方案是:
source.adaptTerrainprimitive.adaptTerrainclassificationType对应 demo:demo/html/VectorMapAdaptTerrain.html、demo/html/VectorMapAdaptAll.html
做法:
adaptTerrain: truebefore这是最推荐的二维专题贴地入口。
对应 demo:demo/html/VectorAdaptGroupExample.html
该 demo 很关键,因为它把两侧角色拆清楚了:
classificationType 在接受/拒绝之间切换这说明 MineMap 的“叠加”本质上是一个 sender / receiver 机制,不只是画面层级问题。
对应 demo:demo/html/SymtrackingOverModel.html
做法:
classificationType: minemap.ClassificationType.FORCE_VECTOR_OVER_MODEL适用于:
但这不是贴地,更不是贴模型几何。
对应 demo:demo/html/SymbolAutoHeight.html
组合特征:
hiddenType: minemap.SymbolHiddenType.SCENEauto-height: trueauto-height-offsetFORCE_VECTOR_OVER_MODEL适合:
对应 demo:
demo/html/SpriteAdaptTerrain.htmldemo/html/HeatMapAdaptTerrain.htmldemo/html/LinePatternAdaptTerrain.htmldemo/html/FillPatternAdaptTerrain.html这说明 shipped demo 中确实存在 sprite、heatmap、pattern 参与贴地的组织方式。
但源码注释对 GeoJSONSource.adaptTerrain 的描述更保守,重点仍放在线/面主路径上。实际项目里应把:
最近 master 新增了:
demo/html/Threejs-RoadEffect.html这个 demo 很重要,因为它证明了当前仓库里已经有一条 shipped 的 threejs 融合场景组织方式:
ThreeLayer 作为三维增强图层minemap.util.getJSON(...) 读取 GeoJSON,再在 threejs 层里生成点线面表达这条路径的定位应写清楚:
source/layer 的常规专题图层主路径addSceneComponent() 的标准 glTF / 3D Tiles 路径因此推荐理解是:
source.adaptTerrainprimitive.adaptTerrainIGNORECLASSIFICATIONFORCE_VECTOR_OVER_MODELauto-height / hiddenTypebefore 和 depth-testsource.adaptTerrain 不等于贴任意三维对象Threejs-RoadEffect.html 证明了 threejs 融合是可行路径,但它更适合:
不适合直接替代:
它的主语义是贴 DEM 地形。不要把它写成“自动贴合全部 3D Tiles / 模型表面”的通用方案。
FORCE_VECTOR_OVER_MODEL 不等于真实几何贴附它解决显示优先级,不解决几何拟合。
adaptTerrainauto-height / hiddenType两套机制不能混成一个抽象概念。
尤其是:
depth-test 时会影响 primitive 贴地当前文档与 demo 的推荐方向,已经转向 source / primitive 两条主路径。
before,却以为已经实现贴地before 只解决图层顺序,不解决空间贴合。
FORCE_VECTOR_OVER_MODEL,却声称“贴模型成功”这只是视觉压盖,不是沿模型表面拟合。
在 DEM、3D Tiles、SceneModel 混合场景里,不配 auto-height / hiddenType,往往会出现埋地、漂浮或遮挡错误。
depth-test这会导致看起来“贴地失效”或结果不稳定。
map.addSource("route", {
type: "geojson",
data: routeGeoJSON,
adaptTerrain: true
});
map.addLayer({
id: "route-line",
type: "line",
source: "route",
paint: {
"line-width": 4,
"line-color": "#00ffff"
}
});
map.addSceneComponent({
id: "tileset-01",
type: "3d-tiles",
url: tilesetUrl,
classificationType: minemap.ClassificationType.IGNORECLASSIFICATION
});
map.addLayer({
id: "poi-symbol",
type: "symbol",
source: "poi-source",
hiddenType: minemap.SymbolHiddenType.SCENE,
layout: {
"icon-image": "poi",
"auto-height": true,
"auto-height-offset": 20
}
});
map.addLayer({
id: "tracking-line",
type: "line",
source: "tracking-source",
classificationType: minemap.ClassificationType.FORCE_VECTOR_OVER_MODEL,
paint: {
"line-width": 6,
"line-color": "#ff5500"
}
});
FORCE_VECTOR_OVER_MODEL 只给关键图层,不要全图默认开启demo/html/VectorMapAdaptTerrain.htmldemo/html/VectorMapAdaptAll.htmldemo/html/VectorAdaptGroupExample.htmldemo/html/SymtrackingOverModel.htmldemo/html/SymbolAutoHeight.htmldemo/html/SpriteAdaptTerrain.htmldemo/html/HeatMapAdaptTerrain.htmldemo/html/LinePatternAdaptTerrain.htmldemo/html/FillPatternAdaptTerrain.htmlminemap-style-and-dataminemap-threejs-integrationminemap-scene-componentsminemap-primitives-and-materialsminemap-primitive-adapt-terrainminemap-terrain-and-analysisminemap-events-and-picking