一键导入
minemap-style-and-data
MineMap 样式规范(style v8)、source/layer 管理、图标资源、GeoJSON 更新与数据源组织,重点补全 VectorTileSource 参数与约束。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
MineMap 样式规范(style v8)、source/layer 管理、图标资源、GeoJSON 更新与数据源组织,重点补全 VectorTileSource 参数与约束。
用 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-style-and-data |
| description | MineMap 样式规范(style v8)、source/layer 管理、图标资源、GeoJSON 更新与数据源组织,重点补全 VectorTileSource 参数与约束。 |
map.on("style.load", () => {
map.addSource("poi", {
type: "geojson",
data: { type: "FeatureCollection", features: [] }
});
map.addLayer({
id: "poi-circle",
type: "circle",
source: "poi",
paint: {
"circle-radius": 5,
"circle-color": "#2d8cf0"
}
});
});
MineMap 使用 style spec version: 8,核心字段仍然是:
sourceslayersspriteglyphsvectorrastergeojsonimage补充结论:
3d-model / 3d-tiles source/layer 方式已不推荐map.addSceneComponent()addLayer(layer, before?)removeLayer(id)moveLayer(id, beforeId?)setFilter(layerId, filter)setLayoutProperty() / setPaintProperty()可用 addSourceGroup(id, source) 处理多份 GeoJSON 异步合并;引擎会先注入临时数据,避免 addLayer 时 source 不存在。
loadImage(url, cb) + addImage(id, image, options)loadImages([{ id, url, imageOptions? }], cb, options)updateImage(id, image)hasImage(id) / removeImage(id) / listImages()最近版本补充结论:
loadImages 当前主路径是描述符数组,不再推荐只传 string[]addImage(...)id、url、isOk、image/errorimageOptions,会透传到内部 addImage(...)兼容说明:
string[] 仍兼容,但已进入弃用兼容模式addImage(...)source/index.js 暴露了几类容易漏掉、但确实属于正式开发面的数据入口:
WMTSCapabilitiesoptionsFromCapabilities(...)setRTLTextPlugin(...)getRTLTextPluginStatus()minemap.util.getJSON(...)minemap.util.getString(...)这些更适合放在“数据接入层”。
这一节以 source/data-source/source-cache/VectorTileSource.js 为准,不按旧博客或旧版 Mapbox 经验脑补。
VectorTileSource 是 MineMap 里最重要的业务 source 之一,典型用于:
map.addSource("road-source", {
type: "vector",
tiles: ["https://example.com/mvt/{z}/{x}/{y}.pbf"],
minzoom: 1,
maxzoom: 20
});
type: 'vector'urltilesschemeprojectionattributiontileSizeminzoommaxzoomboundsadcodepromoteIdadaptTerrainurl 和 tiles两者二选一即可:
url:通过 TileJSON 地址间接拿瓦片描述tiles:直接给瓦片模板 URL 数组业务上更常见的是直接给 tiles。
scheme注释给的标准值:
xyztms默认是 xyz。
projection注释写法是字符串,如 MERCATOR;源码里实际走投影类型判断。
实际建议:
tileSize这是最容易被写错的点。
源码构造器里直接做了硬校验:
vector tile sources must have a tileSize of 512也就是说:
VectorTileSource 的 tileSize 必须是 512minzoom / maxzoom源码真实默认值来自 LayerZoomConfig.VECTOR_DEFAULT_ZOOM:
minzoom = 0maxzoom = 20这点比一些注释旧文本更重要,因为运行时实际就是这么取默认值。
使用建议:
maxzoom 往上提maxzoom 也只是继续放大旧层级bounds格式:
[west, south, east, north]作用:
adcode这是 MineMap 自己扩的重点参数。
含义:
源码还实现了 adcode 的 setter:
因此它不是静态元数据,而是可以作为运行时切区工具使用。
前提:
promoteId作用:
可写法:
这是做 setFeatureState()、交互高亮、运行时状态染色时的重要前置。
adaptTerrain这是 MineMap 的重点扩展能力。
作用:
源码注释明确写了边界:
LineStyleLayer、FillStyleLayer这点很关键:
adaptTerrain 当成“万能贴所有三维表面”clippingPlanes源码里 VectorTileSource 也挂了 clippingPlanes 字段,但这不是常规对外主能力,技能库不把它当作常规 vector source 首选参数。
map.addSource("road-source", {
type: "vector",
tiles: ["https://example.com/mvt/{z}/{x}/{y}.pbf"],
tileSize: 512,
minzoom: 1,
maxzoom: 20,
bounds: [112, 28, 114, 30],
promoteId: "id"
});
map.addSource("line-source", {
type: "vector",
tiles: ["https://example.com/mvt/{z}/{x}/{y}.pbf"],
tileSize: 512,
adaptTerrain: true,
minzoom: 1,
maxzoom: 20
});
优先 vector 的典型场景:
source-layer优先 geojson 的典型场景:
loadImages 新主路径map.loadImages(
[
{ id: "cat", url: "https://example.com/cat.png", imageOptions: { pixelRatio: 2 } },
{ id: "dog", url: "https://example.com/dog.png" }
],
(error, result) => {
if (error) console.error(error);
console.log(result);
},
{
onProgress: (loaded, total) => console.log(loaded, total)
}
);
这条路径的优点是:
addImage(...)loadImages 兼容旧写法时要知道的边界const legacyUrls = ["https://example.com/cat.png"];
map.loadImages(legacyUrls, (error, images) => {
if (!error) {
map.addImage("cat", images[legacyUrls[0]]);
}
});
这是兼容路径,不是当前推荐路径。
addSource / addLayer 先后添加的当前行为最近 master 有专门修复 addSource、addLayer 场景下“不加载”的问题,但该修复主要落在历史 3d-model source/layer 路径。
对 style/source/layer 的常规结论是:
map.addSource(...) 会先执行 _lazyInitEmptyStyle()style.addSource(...)_update(true)因此在空样式、晚绑定样式或运行时动态加 source/layer 的场景里,现版本比旧版本更稳。
但推荐顺序仍然不变:
style.load 后添加map.on("style.load", () => {
if (!map.getSource("lineSource")) {
map.addSource("lineSource", { type: "geojson", data: geojson });
}
if (!map.getLayer("lineLayer")) {
map.addLayer({ id: "lineLayer", type: "line", source: "lineSource" });
}
});
对于 vector source,如果服务端数据更新而 source id 不变,优先触发 reload 或切换服务参数,不要反复销毁整套 layer/source。
const parser = new minemap.WMTSCapabilities();
const capabilities = parser.read(xmlText);
const wmtsSource = minemap.optionsFromCapabilities(capabilities, {
layer: "img",
matrixSet: "EPSG:4326",
format: "image/png"
});
map.addSource("wmts", wmtsSource);
适用场景:
minemap.setRTLTextPlugin("https://example.com/rtl-text.js");
约束:
getRTLTextPluginStatus() 只用于状态判定,不替代初始化逻辑paint/layout/filter,少做整套 setStyleVectorTileSource,不要把所有内容一次性灌进 GeoJSONVectorTileSource 的 bounds、minzoom、maxzoom 要收紧promoteId 提前设计好,避免后期 feature-state 很难补queryRenderedFeatures 指定 layers 范围,减少遍历loadImages 批量图标场景优先用 maxConcurrent、timeout、retryCount 做受控加载,不要手搓一层并发队列minemap-fundamentalsminemap-anti-aliasingminemap-layer-systemminemap-style-systemminemap-2d-3d-overlay-and-classificationminemap-water-surface-and-refractionminemap-scene-componentsminemap-events-and-picking