在mapbox中,经常会有这样的需求,就是不同类别的点数据要展示不同的样式,例如学校有学校自己的图标,商店有商店的图标,医院有医院的图标,等等。那我们就需要将这些点位展示出来,比如现在的场景是给了一个城市的POI数据,所有类型的点都糅杂在一起(学校,医院,商场等),现在要分类展示,如何做到呢?
首先有这么几种思路,第一是将数据提前做分类,通过filter方法将数据过滤成若干份,学校一份,医院一份,然后对应去渲染,代码逻辑也很简单,按照mapbox官网实例写的那样添加个图标就好。代码如下:
//添加图标点图层
//在这里简单的对官方方法进行了封装
addIcon(url, data, imageID, filter) {
if (url) {
this.map.loadImage(url, (error, image) => {
if (error) return;
this.map.addImage(imageID, image);
});
}
let param = {
id: "id",
type: "symbol",
source: {
type: &#