基于属性的符号化线条
问题描述:
我正在尝试使用PolyLineDecorator和Leaflet,但是我遇到了一个障碍,即使放弃PolyLineDecorator来处理基于属性数据的路径/线条时,我也找不到它。基于属性的符号化线条
var polyline = L.polyline([...]).addTo(map);
var decorator = L.polylineDecorator(polyline, {
patterns: [
// defines a pattern of 10px-wide dashes, repeated every 20px on the line
{offset: 0, repeat: 20, symbol: L.Symbol.dash({pixelSize: 10})}
]
}).addTo(map);
然而
对我的作品很大,我有一个GeoJSON的文件,20日线,我想,象征基于JSON文件名称字段的线条。我似乎无法在任何地方找到涵盖此的示例。有人能指出我的任何相关示例或文档吗?我觉得必须有一种方式将每行导出为自己的GeoJSON文件。
感谢您的任何帮助。
答
您应该使用GeoJson onEachFeature()
方法。让我们asume您geoJson
结构为:
var geojsonFeatures = [
{
"type": "Feature",
"properties": {
"name": "Trail 1",
},
"geometry": {
"type": "Point",
"coordinates": [-104.99404, 39.75621]
}
},
{
"type": "Feature",
"properties": {
"name": "Trail 2",
},
"geometry": {
"type": "Point",
"coordinates": [-104.99404, 39.75621]
}
}
];
您可以通过访问feature.properties.name
要素的名称属性:
L.geoJson(geojsonFeature, {
onEachFeature: function (feature, layer) {
if (feature.properties.name === '') {
L.polylineDecorator(layer, {
patterns: [
{offset: 0, repeat: 20, symbol: L.Symbol.dash({pixelSize: 10})}
]
}).addTo(map);
} else {
L.polylineDecorator(layer, {
patterns: [
{offset: 0, repeat: 30, symbol: L.Symbol.dash({pixelSize: 20})}
]
}).addTo(map);
}
})
})
感谢您的答复。对于如何符号化,我感到困惑,例如,Name ='Trail 1'和Name ='Trail 2',其中每个Id的名称都有不同的符号。再次感谢,抱歉,我对此很新。 – unknownid
对不起,我不明白你的意思。 'Name ='Trail 1''和'Name ='Trail 2''是什么?来自GeoJson功能的属性? –
致歉。是的,NAME是geojson文件中的一个字段,id根据geojson文件的NAME字段中的唯一条目以不同方式对每行进行符号化。再次感谢您的帮助,我真的很感激它。 – unknownid