我有一张Leaflet地图,显示geojson Feed中的图钉。我希望能够根据geojson中的属性设置自定义图标,该属性可以包含三个值中的一个,让我们坐绿色,橙色,红色,每个都有预定义的自定义图标。
如果我设置
return L.marker(latlng, {icon: Red});
它工作正常,但如果我设置
return L.marker(latlng, {icon: feature.icon});
验证了feature.icon的值为Red,它不起作用,并返回" Uncaught TypeError:无法读取属性' popupAnchor'未定义"与线条相关的线条相当于将弹出窗口绑定到图层上。
我无法帮助他们认为这是一个简单的语法错误,但无法确定我应该如何做到这一点。
我尝试过单引号和双引号的各种组合,但没有成功。
更新:感谢下面的评论和回答,我意识到了我的想法中的错误。我将图标作为文本值而不是图标对象传递。因此,对此进行排序的逻辑是测试geojson中存在的文本值,并使用它来选择和设置相应的图标。
答案 0 :(得分:4)
您必须创建所需的所有L.Icon对象,并使用onEachFeature回调(请参阅GeoJson)根据geojson属性更改标记图标。
function onEachFeature(feature, layer) {
if(feature.properties.icon && feature.properties.icon == "Red") { // Red is the text in the property
layer.setIcon(Red); // Red is the L.Icon object you have created beforehand
}
}
请参阅example