美文网首页
【地理空间】OpenLayers加载geojson文件

【地理空间】OpenLayers加载geojson文件

作者: Tcpieg | 来源:发表于2021-01-15 16:23 被阅读0次

OpenLayers简述

OpenLayers是用于制作交互式Web地图的开源客户端JavaScript类库,制作的地图几乎可以在所有的浏览器中查看。它可以显示从任何来源加载的地图图块,矢量数据和标记。OpenLayers的开发旨在进一步利用各种地理信息。

官网:https://openlayers.org/,在这里可以查找相关api的说明以及实例。

通过OpenLayers加载geoJson文件

获取geoJson文件

参考这篇文章,通过QGIS将osm文件转化为geoJson格式文件。

加载文件

一开始在网上找到的openlayers类库,发现都无法运行,后来多番查找,终于找到了可以运行成功的类库。如果无法加载类库的话,可以通过下载openlayers的js文件,本地引用一下就好。

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta charset="utf-8"/>
    <title>加载GeoJSON</title>
    <script src="https://openlayers.org/en/v5.3.0/build/ol.js"></script>
    <link rel="stylesheet" href="https://openlayers.org/en/v5.3.0/css/ol.css" type="text/css">
</head>
<body>
<div id="map" class="map"></div>

<script>
    //osm地图
    var vectorone = new ol.layer.Tile({
        source: new ol.source.OSM()
    });

    //style
    //填充样式,颜色以及透明度
    var fill = new ol.style.Fill({
        color: 'rgba(255, 255, 255, 0.6)'
    });
    //边界样式
    var stroke = new ol.style.Stroke({
        color: '#f5036c',
        width: 1
    });
    var stylePolygons = [
        new ol.style.Style({
            // image: new ol.style.Circle({
            //     fill: new ol.style.Fill({
            //         color: 'rgba(255,0,255,0.4)'
            //     }),
            //     stroke: new ol.style.Stroke({
            //         color: '#cc3540',
            //         width: 1.25
            //     }),
            //     radius: 5
            // }),
            text: new ol.style.Text({ //文本样式
                font: '12px Calibri,sans-serif',
                fill: new ol.style.Fill({
                    color: '#000'
                }),
                stroke: new ol.style.Stroke({
                    color: '#fff',
                    width: 3
                })
            }),
            fill: fill,
            stroke: stroke
        })
    ];

    //加载geojson数据
    var pointGeoJsonLayer = new ol.layer.Vector({
        title: 'points',
        source: new ol.source.Vector({
            projection: 'EPSG:4326',
            url: './points.geojson',
            format: new ol.format.GeoJSON()
        })
    });
    var lineGeoJsonLayer = new ol.layer.Vector({
        title: 'lines',
        source: new ol.source.Vector({
            projection: 'EPSG:4326',
            url: './lines.geojson',
            format: new ol.format.GeoJSON()
        })
    });
    var mulsGeoJsonLayer = new ol.layer.Vector({
        title: 'multilinestrings',
        source: new ol.source.Vector({
            projection: 'EPSG:4326',
            url: './multilinestrings.geojson',
            format: new ol.format.GeoJSON()
        })
    });
    var mulpGeoJsonLayer = new ol.layer.Vector({
        title: 'multipolygons',
        source: new ol.source.Vector({
            projection: 'EPSG:4326',
            url: './multipolygons.geojson',
            format: new ol.format.GeoJSON()
        }),
        style: stylePolygons
    });



    //加载地图
    var map = new ol.Map({
        layers: [
            // vectorone,
            // pointGeoJsonLayer,
            lineGeoJsonLayer,
            // mulsGeoJsonLayer,
            // mulpGeoJsonLayer
        ],
        target: 'map',
        controls: ol.control.defaults({
            attributionOptions: ({
                collapsible: true
            })
        }),
        view: new ol.View({
            center: ol.proj.fromLonLat([116.4196, 39.9322]),
            zoom: 13
        })
    });
</script>
</body>
</html>
加载geoJson

加载OSM地图

openlayers可以直接加在OSM地图作为底图,我们可以根据需要,像在高德地图上面实现标记、画线等操作,具体的操作方法根据需要研究一下openlayers的相关api,但是效果可能不如高德地图。

    //加载地图
    var map = new ol.Map({
        layers: [
            vectorone,
            // pointGeoJsonLayer,
            // lineGeoJsonLayer,
            // mulsGeoJsonLayer,
            // mulpGeoJsonLayer
        ],
        target: 'map',
        controls: ol.control.defaults({
            attributionOptions: ({
                collapsible: true
            })
        }),
        view: new ol.View({
            center: ol.proj.fromLonLat([116.4196, 39.9322]),
            zoom: 13
        })
    });
加载OSM

相关文章

网友评论

      本文标题:【地理空间】OpenLayers加载geojson文件

      本文链接:https://www.haomeiwen.com/subject/dsfvgktx.html