2016-08-04 76 views
1

我正在尝试使用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文件。

感谢您的任何帮助。

回答

1

您应该使用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); 
    } 
    }) 
}) 
+0

感谢您的答复。对于如何符号化,我感到困惑,例如,Name ='Trail 1'和Name ='Trail 2',其中每个Id的名称都有不同的符号。再次感谢,抱歉,我对此很新。 – unknownid

+0

对不起,我不明白你的意思。 'Name ='Trail 1''和'Name ='Trail 2''是什么?来自GeoJson功能的属性? –

+0

致歉。是的,NAME是geojson文件中的一个字段,id根据geojson文件的NAME字段中的唯一条目以不同方式对每行进行符号化。再次感谢您的帮助,我真的很感激它。 – unknownid