mapbox symbol图层自定义图标

现象

mapbox中symbol类型的图层可以在layout中通过icon-image自定义图层的图标符号,不过若将该配置项的取值直接设置为某一图标的URL并不生效,见下图

layout:{
    visibility:"visible",
    "icon-image":"./assets/agg.png",
},

image-20221230155936829

并且此时会触发地图对象的styleimagemissing事件

方法1

预先调用map对象的addImage接口注册该图像

const image=new Image();
image.src="agg.png";
image.onload=()=>{
    image.width=50;
    image.height=50;
    this.map.addImage("aggLabel",image);
};

相应的对icon-image的配置进行更改

layout:{
    visibility:"visible",
    "icon-image":"aggLabel"
},

方法2

通过**mapbox studio**自定义图层的样式

  • 新建样式

image-20221230160901812

  • 上传自己的图标:注意这里只能是svg格式的图标,可以到iconfont这里去找

image-20221230161047905

上传的图片在这里

image-20221230161844104

  • 发布自定义的图层样式

image-20221230161341808

  • 拷贝该图层样式的url并在代码中进行配置,注意mapbox的token应当对该样式具有权限

image-20221230161614777

this.map = new mapboxgl.Map({
    accessToken: mapboxToken,
    antialias: true,
    container: "mapContainer",
    style:"拷贝到这里",
    center: [113.12302920024092, 31.76274963518034],
    zoom: 6,
    maxZoom: 17,
    minZoom: 0,
});

对icon-image进行配置:aggcircle是上传的图片的名字

layout:{
    visibility:"visible",
    "icon-image":"aggcircle",
},

效果

image-20221230162129908

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值