学习目标掌握向地图添加图标的实现方法理解相关API的使用能够独立完成类似功能开发⭕️MapLibre GL JS全部课时目录⭕️ 核心概念向地图添加图标。 完 整 代 码代码示例constmapnewmaplibregl.Map({container:map,style:https://demotiles.maplibre.org/style.json});map.on(load,async(){imageawaitmap.loadImage(https://upload.wikimedia.org/wikipedia/commons/7/7c/201408_cat.png);map.addImage(cat,image.data);map.addSource(point,{type:geojson,data:{type:FeatureCollection,features:[{type:Feature,geometry:{type:Point,coordinates:[0,0]}}]}});map.addLayer({id:points,type:symbol,source:point,layout:{icon-image:cat,icon-size:0.25}});});代码示例!DOCTYPEhtmlhtmllangenheadtitleAdd an icon to the map/titlemetapropertyog:descriptioncontent从外部 URL 向地图添加图标并在符号图层中使用它。/metapropertyog:createdcontent2025-06-25/metacharsetutf-8metanameviewportcontentwidthdevice-width, initial-scale1linkrelstylesheethrefhttps://unpkg.com/maplibre-gl5.24.0/dist/maplibre-gl.css/scriptsrchttps://unpkg.com/maplibre-gl5.24.0/dist/maplibre-gl.js/scriptstylebody{margin:0;padding:0;}html, body, #map{height:100%;}/style/headbodydividmap/divscriptconstmapnewmaplibregl.Map({container:map,style:https://demotiles.maplibre.org/style.json});map.on(load,async(){imageawaitmap.loadImage(https://upload.wikimedia.org/wikipedia/commons/7/7c/201408_cat.png);map.addImage(cat,image.data);map.addSource(point,{type:geojson,data:{type:FeatureCollection,features:[{type:Feature,geometry:{type:Point,coordinates:[0,0]}}]}});map.addLayer({id:points,type:symbol,source:point,layout:{icon-image:cat,icon-size:0.25}});});/script/body/html 代码解析初始化地图使用new maplibregl.Map()创建地图实例配置基本参数。本示例的核心特色是展示如何从外部URL加载图标并添加到地图上。关键配置项container: 地图容器的 DOM 元素 IDstyle: 使用 MapLibre 官方样式https://demotiles.maplibre.org/style.json加载外部图标map.on(load,async(){imageawaitmap.loadImage(https://upload.wikimedia.org/wikipedia/commons/7/7c/201408_cat.png);map.addImage(cat,image.data);});添加符号图层map.addLayer({id:points,type:symbol,source:point,layout:{icon-image:cat,icon-size:0.25}});⚙️ 参数说明参数类型必填默认值说明containerstring是-地图容器元素的 IDstylestring/object是-地图样式 URL 或内联样式对象icon-image 布局属性属性类型必填说明icon-imagestring是图标的唯一标识名称icon-sizenumber否图标缩放比例默认 1 效果说明运行代码后地图上会在坐标[0, 0]赤道和本初子午线交点处显示一个猫咪图标图标显示: 猫咪图标以 25% 的原始大小显示icon-size: 0.25交互功能: 支持鼠标拖拽、滚轮缩放、右键旋转等标准交互地图默认: 显示全球视图无特定中心点和缩放级别 常 见 问 题Q1: 图标不显示怎么办A:按以下步骤排查确保图片 URL 可访问确认map.loadImage()返回的数据有效检查addImage()的 ID 与icon-image引用的名称一致确保在load事件回调中操作Q2: 如何调整图标大小A:使用icon-size属性调整图标缩放比例icon-size:0.5// 50% 大小Q3: 可以使用本地图片吗A:可以。使用相对路径或绝对路径引用本地图片文件。Q4: 支持哪些图片格式A:支持 PNG、JPEG、WebP 和 SVG 格式的图片。 练习任务基础练习修改图标 URL使用其他图片作为地图标记进阶挑战添加多个不同位置的图标点拓展思考如何根据不同属性显示不同的图标 最佳实践图片格式: 优先使用 PNG 或 WebP 格式支持透明背景图片大小: 使用适当尺寸的图标避免过大影响性能异步加载: 使用await确保图片加载完成后再添加图层错误处理: 添加图片加载失败的降级方案缓存策略: 对于重复使用的图标考虑缓存图标命名: 使用清晰的图标 ID 命名规范 延伸阅读Map API文档MapLibre GL JS 官方文档[下一课预告]将继续学习地图图层的基础知识本文是MapLibre GL JS实践课程系列的一部分欢迎关注收藏
MapLibre GL JS第41课:向地图添加图标
发布时间:2026/6/8 15:03:16
学习目标掌握向地图添加图标的实现方法理解相关API的使用能够独立完成类似功能开发⭕️MapLibre GL JS全部课时目录⭕️ 核心概念向地图添加图标。 完 整 代 码代码示例constmapnewmaplibregl.Map({container:map,style:https://demotiles.maplibre.org/style.json});map.on(load,async(){imageawaitmap.loadImage(https://upload.wikimedia.org/wikipedia/commons/7/7c/201408_cat.png);map.addImage(cat,image.data);map.addSource(point,{type:geojson,data:{type:FeatureCollection,features:[{type:Feature,geometry:{type:Point,coordinates:[0,0]}}]}});map.addLayer({id:points,type:symbol,source:point,layout:{icon-image:cat,icon-size:0.25}});});代码示例!DOCTYPEhtmlhtmllangenheadtitleAdd an icon to the map/titlemetapropertyog:descriptioncontent从外部 URL 向地图添加图标并在符号图层中使用它。/metapropertyog:createdcontent2025-06-25/metacharsetutf-8metanameviewportcontentwidthdevice-width, initial-scale1linkrelstylesheethrefhttps://unpkg.com/maplibre-gl5.24.0/dist/maplibre-gl.css/scriptsrchttps://unpkg.com/maplibre-gl5.24.0/dist/maplibre-gl.js/scriptstylebody{margin:0;padding:0;}html, body, #map{height:100%;}/style/headbodydividmap/divscriptconstmapnewmaplibregl.Map({container:map,style:https://demotiles.maplibre.org/style.json});map.on(load,async(){imageawaitmap.loadImage(https://upload.wikimedia.org/wikipedia/commons/7/7c/201408_cat.png);map.addImage(cat,image.data);map.addSource(point,{type:geojson,data:{type:FeatureCollection,features:[{type:Feature,geometry:{type:Point,coordinates:[0,0]}}]}});map.addLayer({id:points,type:symbol,source:point,layout:{icon-image:cat,icon-size:0.25}});});/script/body/html 代码解析初始化地图使用new maplibregl.Map()创建地图实例配置基本参数。本示例的核心特色是展示如何从外部URL加载图标并添加到地图上。关键配置项container: 地图容器的 DOM 元素 IDstyle: 使用 MapLibre 官方样式https://demotiles.maplibre.org/style.json加载外部图标map.on(load,async(){imageawaitmap.loadImage(https://upload.wikimedia.org/wikipedia/commons/7/7c/201408_cat.png);map.addImage(cat,image.data);});添加符号图层map.addLayer({id:points,type:symbol,source:point,layout:{icon-image:cat,icon-size:0.25}});⚙️ 参数说明参数类型必填默认值说明containerstring是-地图容器元素的 IDstylestring/object是-地图样式 URL 或内联样式对象icon-image 布局属性属性类型必填说明icon-imagestring是图标的唯一标识名称icon-sizenumber否图标缩放比例默认 1 效果说明运行代码后地图上会在坐标[0, 0]赤道和本初子午线交点处显示一个猫咪图标图标显示: 猫咪图标以 25% 的原始大小显示icon-size: 0.25交互功能: 支持鼠标拖拽、滚轮缩放、右键旋转等标准交互地图默认: 显示全球视图无特定中心点和缩放级别 常 见 问 题Q1: 图标不显示怎么办A:按以下步骤排查确保图片 URL 可访问确认map.loadImage()返回的数据有效检查addImage()的 ID 与icon-image引用的名称一致确保在load事件回调中操作Q2: 如何调整图标大小A:使用icon-size属性调整图标缩放比例icon-size:0.5// 50% 大小Q3: 可以使用本地图片吗A:可以。使用相对路径或绝对路径引用本地图片文件。Q4: 支持哪些图片格式A:支持 PNG、JPEG、WebP 和 SVG 格式的图片。 练习任务基础练习修改图标 URL使用其他图片作为地图标记进阶挑战添加多个不同位置的图标点拓展思考如何根据不同属性显示不同的图标 最佳实践图片格式: 优先使用 PNG 或 WebP 格式支持透明背景图片大小: 使用适当尺寸的图标避免过大影响性能异步加载: 使用await确保图片加载完成后再添加图层错误处理: 添加图片加载失败的降级方案缓存策略: 对于重复使用的图标考虑缓存图标命名: 使用清晰的图标 ID 命名规范 延伸阅读Map API文档MapLibre GL JS 官方文档[下一课预告]将继续学习地图图层的基础知识本文是MapLibre GL JS实践课程系列的一部分欢迎关注收藏