بنقرة واحدة
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