语法中的问题动态设置传单中的图标值

时间:2016-06-10 16:43:17

标签: javascript leaflet

我有一张Leaflet地图,显示geojson Feed中的图钉。我希望能够根据geojson中的属性设置自定义图标,该属性可以包含三个值中的一个,让我们坐绿色,橙色,红色,每个都有预定义的自定义图标。

如果我设置

return L.marker(latlng, {icon: Red});

它工作正常,但如果我设置

return L.marker(latlng, {icon: feature.icon});

验证了feature.icon的值为Red,它不起作用,并返回" Uncaught TypeError:无法读取属性' popupAnchor'未定义"与线条相关的线条相当于将弹出窗口绑定到图层上。

我无法帮助他们认为这是一个简单的语法错误,但无法确定我应该如何做到这一点。

我尝试过单引号和双引号的各种组合,但没有成功。

更新:感谢下面的评论和回答,我意识到了我的想法中的错误。我将图标作为文本值而不是图标对象传递。因此,对此进行排序的逻辑是测试geojson中存在的文本值,并使用它来选择和设置相应的图标。

1 个答案:

答案 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