• OpenLayer4——添加Geojson


    Geojson是一种特殊的json数据,内部封装了地理空间相关的数据(点、线、面)。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link href="ol/ol.css" rel="stylesheet" type="text/css"/>
        <script type="text/javascript" src="ol/ol.js" charset="utf-8"></script>
        <script type="text/javascript" src="ol/jquery-1.11.3.js" charset="utf-8"></script>
    </head>
    <body>
    <div id="map" style=" 100%;height: 100%"></div>
    <button id="btn1">click</button>
    <script>
    
        //设置一个点的样式
        var image = new ol.style.Circle({
            radius: 5,
            fill: null,
            stroke: new ol.style.Stroke({color: 'red',  1})
        });
    
        //给每一种样式的数据,添加一个默认的Style,添加geojson的时候,自动进行样式选择
        var styles = {
            'Point': new ol.style.Style({
                image: image
            }),
            'LineString': new ol.style.Style({
                stroke: new ol.style.Stroke({
                    color: 'green',
                     1
                })
            }),
            'MultiLineString': new ol.style.Style({
                stroke: new ol.style.Stroke({
                    color: 'green',
                     1
                })
            }),
            'MultiPoint': new ol.style.Style({
                image: image
            }),
            'MultiPolygon': new ol.style.Style({
                stroke: new ol.style.Stroke({
                    color: 'yellow',
                     1
                }),
                fill: new ol.style.Fill({
                    color: 'rgba(255, 255, 0, 0.1)'
                })
            }),
    
            'Polygon': new ol.style.Style({
                stroke: new ol.style.Stroke({
                    color: 'blue',
                    lineDash: [4],
                     3
                }),
                fill: new ol.style.Fill({
                    color: 'rgba(0, 0, 255, 0.5)'
                })
            }),
            'GeometryCollection': new ol.style.Style({
                stroke: new ol.style.Stroke({
                    color: 'magenta',
                     2
                }),
                fill: new ol.style.Fill({
                    color: 'magenta'
                }),
                image: new ol.style.Circle({
                    radius: 10,
                    fill: null,
                    stroke: new ol.style.Stroke({
                        color: 'magenta'
                    })
                })
            }),
            'Circle': new ol.style.Style({
                stroke: new ol.style.Stroke({
                    color: 'red',
                     2
                }),
                fill: new ol.style.Fill({
                    color: 'rgba(255,0,0,0.2)'
                })
            })
        };
    
        // 测试用geojson
        // var geojsonObject = {
        //   "features": [{
        //     "geometry": {
        //       "coordinates": [[[97, 39.5], [97, 39.25], [102, 34.75], [105.25, 36], [105.25, 36.75], [104, 39.25], [98.25, 40], [98, 40], [97.75, 40], [97.5, 40], [97, 39.5]]],
        //       "type": "Polygon"
        //     }, "type": "Feature", "properties": {}
        //   }], "type": "FeatureCollection"
        // };
    
        // 测试用geojson
        var geojsonObject = {
            "features": [{
                "geometry": {
                    "type": "GeometryCollection",
                    "geometries": [
                        {
                            "type": "Point",
                            "coordinates": [108.62, 31.02819]
                        }, {
                            "type": "LineString",
                            "coordinates": [[108.896484375, 30.1071178870],
                                [108.2184375, 30.91717870],
                                [109.5184375, 31.2175780]]
                        }]
                }, "type": "Feature", "properties": {}
            }], "type": "FeatureCollection"
        };
    
        var vectorSource = new ol.source.Vector({
            //geojson转feature对象,将EPSG:4326坐标系修改为EPSG:3857(根据数据格式来)
            features: (new ol.format.GeoJSON({featureProjection: 'EPSG:3857'})).readFeatures(geojsonObject),
        });
    
        var vectorLayer = new ol.layer.Vector({
            source: vectorSource,
            style: function (feature) {
                return styles[feature.getGeometry().getType()];
            }
        });
    
        var map = new ol.Map({
            layers: [
                new ol.layer.Tile({
                    source: new ol.source.OSM()
                }),
                vectorLayer
            ],
            target: 'map',
            view: new ol.View({
                //地图中心为117.2736, 31.8646,并把坐标投影转换为3857(web 墨卡托投影)
                center: ol.proj.transform([117.2736, 31.8646], 'EPSG:4326', 'EPSG:3857'),
                // 并且定义地图显示层级为5
                zoom: 5
            })
        });
    </script>
    </body>
    </html>

  • 相关阅读:
    遗传学详解及Matlab算法实现
    (转)非常好的理解遗传算法的例子
    Halcon学习笔记之支持向量机(二)
    Hough 变换
    主元分析PCA理论分析及应用
    Retinex图像增强算法
    Halcon学习笔记之支持向量机(一)
    阿里云OSS安装使用问题
    JS中双击和单击事件冲突解决
    JavaScript正则表达式应用---replace()
  • 原文地址:https://www.cnblogs.com/chenss15060100790/p/16066069.html
Copyright © 2020-2023  润新知