在MapBox GL/JavaScript中为点和多边形创建图例

问题描述:

我正在使用MapBox GL紧跟其choropleth example制作我的第一个地图。在我的数据中,我有一个多边形和一些点,我希望有一个具有不同形状(一条线和一个点)和颜色的图例。我被颜色部分卡住了,因为多边形颜色是由'线条颜色'给出的,而点是'圆形颜色'。你知道如何在下面的代码中添加这种差异吗?在MapBox GL/JavaScript中为点和多边形创建图例

map.on('load', function() { 

    // the rest of the code will go in here 
    var layers = ['torpigna', 'bar']; 

    layers.forEach(function(layer) { 

    var color = map.getPaintProperty(layer, 'circle-color'); 
    var item = document.createElement('div'); 
    var key = document.createElement('span'); 
    key.className = 'legend-key'; 
    key.style.backgroundColor = color; 

    var value = document.createElement('span'); 
    value.innerHTML = layer; 
    item.appendChild(key); 
    item.appendChild(value); 
    legend.appendChild(item); 
}); 
}); 

感谢, 雅格布

你需要查询层的类型:

layers.forEach(function(layerId) { 

var layer = map.getLayer(layerid); 
if (layer.type === 'circle') { 
... layer.paint['circle-fill'] 
} else if (layer.type === 'fill') { 
... layer.paint['line-color'] 
} 

你会发现这个代码有帮助的,因为它一样一样的你在做什么试图实现:https://github.com/City-of-Melbourne/Data3D/blob/master/src/js/mapVis.js