webGIS实践(geoserver+openlayer+django)3_1_openlayer展绘点线面注记

上一篇已经讲了,怎么加载瓦片地图。

这篇就看看怎么简单的渲染矢量点线面数据。

最简单的,绘制点线面注记。

效果长这样:

 

新建一个文件FeatureOL.HTML。

      

代码如下:

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>openlayer渲染矢量要素</title>
    <link rel="stylesheet" href="ol/ol.css">
    <script src="ol/ol.js"></script>
    <script src="jquery-1.7.2.js"></script>
    <style type="text/css">
        #map,
        html,
        body {
            height: 100%;
            width: 100%;
        }
        .content {
            width: 100px;
        }

    </style>
</head>

<body>
<div id="map"></div>
</body>
<script type="text/javascript">
    //页面
    var view = new ol.View({
        // 设置中心点坐标,因为加载的腾讯瓦片地图的坐标系是墨卡托投影坐标系('EPSG:3857'),所以要对经纬度坐标点进行投影,ol.proj.transform既是openlayer自带的坐标系转换函数,支持WGS84和墨卡托投影的互换。
        center: ol.proj.transform([116.400146,40.250184], 'EPSG:4326', 'EPSG:3857'),
        // 比例尺级数为9
        zoom: 9
    });

    var layers = [
        // 加载腾讯瓦片底图
        new ol.layer.Tile({
            source: new ol.source.XYZ({
                url: "http://rt{0-3}.map.gtimg.com/realtimerender?z={z}&x={x}&y={-y}&type=vector&style=0"
            })
        })       
    ];
    //地图
    var map = new ol.Map({

        target: 'map',//指向div
        layers: layers,
        view: view
    });
    //设置风格,点线面注记
    var style=new ol.style.Style({
        image: new ol.style.Circle({
            fill: new ol.style.Fill({
                color: 'rgba(192, 192, 192, 0.5)'
            }),
            stroke: new ol.style.Stroke({
                color: 'rgba(192, 0, 0, 1)',
                width: 2
            }),
            radius: 10,
        }),
        stroke: new ol.style.Stroke({
            color: 'rgba(192, 0, 0, 1)',
            width: 2
        }),
        fill: new ol.style.Fill({
            color: 'rgba(192, 192, 192, 0.5)'
        }),
        text: new ol.style.Text({
            font: '20px Microsoft YaHei',
            text:  '测试注记',
            offsetX: 20,
            offsetY: 20,
            fill: new ol.style.Fill({
                color: 'rgba(192, 0, 0, 1)'
            }),
            stroke: new ol.style.Stroke({color: 'rgba(255, 255, 255, 1)', width: 1}),
        })
    })
    // 新建点
    var point = new ol.Feature(new ol.geom.Point(ol.proj.transform([116.400146,40.250184], 'EPSG:4326', 'EPSG:3857')));
    // 新建线
    var line = new ol.Feature(new ol.geom.LineString([ol.proj.transform([116.400146,40.250184], 'EPSG:4326', 'EPSG:3857'), ol.proj.transform([117.400146,41.250184], 'EPSG:4326', 'EPSG:3857')]));
    // 新建面
    var polygon = new ol.Feature(new ol.geom.Polygon([[ol.proj.transform([116.400146,40.250184], 'EPSG:4326', 'EPSG:3857'), ol.proj.transform([116.400146,41.250184], 'EPSG:4326', 'EPSG:3857'),ol.proj.transform([117.400146,41.250184], 'EPSG:4326', 'EPSG:3857'),ol.proj.transform([116.400146,40.250184], 'EPSG:4326', 'EPSG:3857')]]));
    // 创建矢量资源
    var source=new ol.source.Vector({
        features: [point,line,polygon]
    });
    // 创建矢量图层
    var layer=new ol.layer.Vector({
        source:source,
        style:style
    });
    // 将图层添加至地图
    map.addLayer(layer);

</script>
<style type="text/css">
    * {
        margin: 0px;
        padding: 0px;
    }

    #map {
        width: 100%;
        height: 100%;
    }
</style>
</html>

 

一般来说,地图要素的注记与几何属性是不分离的,所以注记需要提取要素中的属性字段。

本文只是简单示例渲染矢量要素,注记的动态展示,会在后面渲染查询geojson要素的时候介绍。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值