已被阅读 2910 次 | 文章分类:OpenLayers | 2024-03-02 22:48
本文使用openlayers渲染GeoJSon数据,以浙江省 区数据为例,渲染边界,填充颜色,设置标注,符号化等
1 实现效果
本文主要包括如下内容:
👉1 加载影像底图
👉2 加载geojson矢量数据,用默认样式显示
👉3 自定义多边形边界和填充样式
👉4 添加统一标注
👉5 读取属性,添加自定义标注
👉6 根据name符号化数据,不同区域不同颜色
效果如下:
                                             
                                        
                                             
                                        
                                             
                                        
                                             
                                        
                                             
                                        
                                             
                                        
2 全部代码
👉1 加载影像底图
                                        
var map = new ol.Map({
    target: 'map',
    view: new ol.View({
        center: [120, 30],
        zoom: 7,
        projection:"EPSG:4326"
    })
});
let baseLayer = new ol.layer.Tile({
    source: new ol.source.XYZ({
        url: 'https://server.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}'
    })
});
map.addLayer(baseLayer)
                                        
                                    
                                    加载arcgis online提供的瓦片地图服务,使用ol.source.XYZ加载
👉2 浙江省区默认样式显示
使用ol.source.Vector加载geojson数据,geojson数据直接由arcgis或者在线工具转为geojson格式即可
                                        
let vectorLayer = new ol.layer.Vector({
    source: new ol.source.Vector({
        format: new ol.format.GeoJSON(),
        url: './data/zhejiang_country.json' 
    })
})
map.addLayer(vectorLayer)
                                        
                                    
                                    👉3 浙江省区默认样式显示
默认样式可能不满足需求,我们可以自定义样式显示
                                        
let vectorLayer = new ol.layer.Vector({
    source: new ol.source.Vector({
        format: new ol.format.GeoJSON(),
        url: './data/zhejiang_country.json' 
    }),
    style: [
        new ol.style.Style({
            fill: new ol.style.Fill({
                color: "rgb(255 255 255)",
            }),
            stroke: new ol.style.Stroke({
                color: "rgb(206 224 247)",
                width: 1,
            })
        })
    ]
})
map.addLayer(vectorLayer)
                                        
                                    
                    QQ:3410192267 | 技术支持 微信:popstarqqsmall
Copyright ©2017 xiaobaigis.com . 版权所有 鲁ICP备17027716号