openlayer 图形样式编辑

1、一个完整的绘制图层应该包含(从里到外)

(1)ol.geom.Geometry:地理空间对象的几何实体

(2)ol.Feature:要素,包含地理空间对象的几何实体

(3)ol.source.Vector:绘制层数据源,包含地图要素(ol.source.Source的子类)

(4)ol.style.Style:样式类

(5)ol.layer.Vector:绘制层,包含绘制层数据源、样式

2、地理空间对象的几何实体(ol.geom.Geometry的孙类)

(1)ol.geom.Circle:圆
(2)ol.geom.LinearRing:线性环
(3)ol.geom.LineString:线
(4)ol.geom.MultiLineString:多线条
(5)ol.geom.MultiPoint:多点
(6)ol.geom.MultiPolygon:多面
(7)ol.geom.Point:点
(8)ol.geom.Polygon:多边形

3、要素参数

(1)geometry:几何图形

(2)name:名称

4、绘制层数据源参数

(1)features:地图要素

5、关于Openlayer的样式,通过ol.style.Style类进行设置,主要参数有

(1)fill:填充样式(ol.styleFill)

(2)image:图像样式(ol.style.image)

(3)stroke:边界线样式(ol.style.stroke)

(4)text:文本样式(ol.style.Text)

6、绘制层参数

(1)source:绘制层数据源

(2)style:样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link href="libs/ol/ol.css"/>
    <script src="libs/ol/ol-debug.js"></script>

</head>
<body>
    <div id="map"></div>
</body>
<script>
    //卫星图层
    var satlayer = new ol.layer.Tile({
        source: new ol.source.XYZ({
            title: "卫星图",
            url: 'http://t3.tianditu.com/DataServer?T=img_w&x={x}&y={y}&l={z}'
        })

    });

    //卫星图标注层
    var satannolayer = new ol.layer.Tile({
        title: "卫星图标注",
        source: new ol.source.XYZ({
            url: 'http://t3.tianditu.com/DataServer?T=cia_w&x={x}&y={y}&l={z}'
        })
    });

    // 文本样式
    var textStyle = new ol.style.Text({
        textAlign:'Center',
        textBaseline:'Top',
        font:'Arial',
        text:'你要的不是我',
        fill: new ol.style.Fill({color: 'green'}),
        stroke: new ol.style.Stroke({
            color: 'red',
            width:3
        }),
        offsetX: 0,
        offsetY: 1,
        rotation: 0
    });

    //绘制点
    //点要素
    var pointFeature = new ol.Feature({
        geometry: new ol.geom.Point([0, 0]),
        name: '点要素'
    });
    //点要素样式
    var pointStyle = new ol.style.Style({
        image: new ol.style.Circle({
            radius: 10,
            fill: new ol.style.Fill({color: 'blue'}),
            stroke: new ol.style.Stroke({
                color: 'red',
                width: 4
            })
        }),
        text: textStyle
    });
    //点要素绘制图层
    var vectorPoints = new ol.layer.Vector({
        source: new ol.source.Vector({
            features:[pointFeature]
        }),
        style:pointStyle
    });

    //绘制线
    //线要素
    var lineFeature = new ol.Feature({
        geometry: new ol.geom.LineString([[1e7,1e6],[1e6,3e6]]),
        name: '线要素'
    });
    //线要素样式
    var lineStyle = new ol.style.Style({
        stroke: new ol.style.Stroke({
            color: 'red',
            width: 3
        }),
        text: textStyle
    });
    //先要素绘制图层
    var vectorLines = new ol.layer.Vector({
        source: new ol.source.Vector({
            features: [lineFeature]
        }),
        style:lineStyle
    });

    //绘制区要素
    //区要素
    var polygonFeature = new ol.Feature({
        geometry: new ol.geom.Polygon(
            [[[1e6, -1e6],[1e6, 1e6], [3e6, 1e6], [3e6, -1e6],[1e6, -1e6]]]
        ),
        name: '区要素'
    });
    //区要素样式
    var polygonStyle = new ol.style.Style({
        stroke: new ol.style.Stroke({
            color: 'blue',
            width: 3
        }),
        fill: new ol.style.Fill({
            color: 'red'
        }),
        text: textStyle
    });

    var vectorPolygons = new ol.layer.Vector({
        source: new ol.source.Vector({
            features: [polygonFeature]
        }),
        style:polygonStyle
    });

    //实例化Map对象加载地图
    var map = new ol.Map({
        layers: [satlayer, satannolayer,vectorPoints, vectorLines, vectorPolygons],
        target: 'map',
        view:new ol.View({
            center: [0, 0],
            zoom: 3,
            maxZoom: 18,
            minZoom: 1
        })
    });


</script>
</html>

转载自:https://blog.csdn.net/MASORL/article/details/78714221

You may also like...