LineLayer类支持加载GeoJSON线数据源,能够进行海量线数据的个性化展示
线图层可以设置线宽、颜色、描边和纹理等属性。
var lineLayer = new BMap.LineLayer({style: {strokeStyle: 'solid',strokeColor: '#2a6cf6', // 设置线条的颜色strokeWeight: 4, // 设置线条的宽度,单位为像素strokeOpacity: 0.9, // 设置线条的透明度,取值范围0-1},});map.addLayer(lineLayer);
LineLayer使用 GeoJSON 格式的数据源,通过 setData 方法设置数据:
var geojson = {// 线数据,geometry类型为LineString或MultiLineStringtype: 'FeatureCollection',features: [{type: 'Feature',properties: { name: 'line1' },geometry: {type: 'LineString',coordinates: [[116.404, 39.915], [116.410, 39.925], [116.425, 39.920]],},}],};lineLayer.setData(geojson); // 设置线图层的数据
通过style.strokeTextureUrl 设置图片地址
var lineLayer = new BMap.LineLayer({style: {strokeTextureUrl: 'texture.png',strokeTextureWidth: 16, // 设置纹理的宽度,单位为像素strokeTextureHeight: 16, // 设置纹理的高度,单位为像素},});
能够通过style.strokeStyle: 'dashed'设置虚线展示,用style.dashArray设置虚线样式
var lineLayer = new BMap.LineLayer({style: {strokeStyle: 'dashed',dashArray: [20, 14], // 设置虚线样式,实线20像素,间隙14像素},});
通过style.borderColor以及style.borderWeight设置虚线的颜色和宽度,默认无描边
var lineLayer = new BMap.LineLayer({style: {borderColor: '#222831',borderWeight: 3,},});
样式属性除了设置固定值,还支持设置为表达式。表达式在渲染时会读取每条线的 properties 属性数据并实时求值,从而实现同一个图层内的不同线条展示不同样式。
var lineLayer = new BMap.LineLayer({style: {strokeColor: ['match', ['get', 'level'], // 根据level属性匹配颜色1, '#e7515a', // level为1时显示红色2, '#2a6cf6', // level为2时显示蓝色'#9aa0a8', // 都不匹配时使用的默认色],strokeWeight: ['match', ['get', 'level'],1, 6,2, 4,2,],},});map.addLayer(lineLayer);
JSAPI支持监听线图层的事件。监听事件前,需要在创建图层时开启拾取能力:
var lineLayer = new BMap.LineLayer({enablePicked: true, // 开启拾取,点击线条时触发事件selectedColor: '#ff7a45', // 设置选中线条的高亮颜色style: {strokeColor: '#2a6cf6',strokeWeight: 4,},});lineLayer.addEventListener('click', function (e) {if (e.value && e.value.dataIndex !== -1) {var properties = e.value.dataItem.properties; // 获取被点击线条的属性数据alert('您点击了线图层中的第 ' + e.value.dataIndex + ' 条线');}});
上一篇
下一篇