经纬志
首页 / MapLibre / 使用示例

自定义图标

水滴图标由 canvas 画出,注册进样式后作为 icon-image 使用。 不依赖图片文件,也不受跨域限制。

MapLibre GL JS 4.x · 更新 2026-10-28
源码与运行效果
运行效果

说明

addImage 接受 ImageData、HTMLImageElement 或 ImageBitmap。示例用 getImageData 取整块 64×64 像素, 注册名为 pin,图层里用字符串引用。

icon-anchor: 'bottom' 让图标尖端对准坐标。默认居中时, 水滴的尖头会浮在点位上方,看起来像整体偏移了一段距离。

配置取值说明
addImage(id, data)ImageData注册图片,同名会报错
icon-image'pin'引用注册名,不是文件路径
icon-size0.5–2缩放倍数,滑块实时修改
icon-anchor'bottom'尖端对齐坐标
icon-allow-overlapfalse开启后密集区也全部显示

图标位图没有 pixelRatio 时按 1 倍处理。高分屏上会略糊, 注册时传 { pixelRatio: 2 } 并用两倍尺寸的 canvas 绘制,边缘才清晰。

icon-size 按倍数缩放位图,超过 2 倍时边缘发虚。 需要多种尺寸时,用 SDF 图标配合 icon-color 着色, 任意放大都保持锐利。