openlayers入门开发系列之批量叠加zip压缩SHP图层篇

本篇的重点内容是直接加载压缩文件zip形式shp,可以批量加载点、线、面shp图层,效果图如下:

实现的思路跟之前实现arcgis api for js版本是一致的:arcgis api for js入门开发系列二十三批量叠加zip压缩SHP图层

压缩的shp截图如下:

实现的核心代码:

//叠加压缩SHP图层,批量加载显示
$("#zipshp").click(function () {
            shp("js/main/shpJS/gishome.zip").then(function (data) {
                if (data && data.length > 0) {
                var layers = map.getLayers().getArray();
                var remolayers = [];
                for(var i =0;i<layers.length;i++){
                    var layer = layers[i];
                    if(layer.get("id") && layer.get("id").indexOf("zipshp") != -1){
                        remolayers.push(layer);
                    }
                }
                for(var j=0;j<remolayers.length;j++){
                    map.removeLayer(remolayers[j]);
                }
                var image = new ol.style.Circle({
                        radius: 5,
                        fill: null,
                        stroke: new ol.style.Stroke({color: ‘red‘, width: 1})
                });
                var styles = {
                        ‘Point‘: new ol.style.Style({
                          image: image
                        }),
                        ‘LineString‘: new ol.style.Style({
                          stroke: new ol.style.Stroke({
                            color: ‘red‘,
                            width: 6
                          })
                        }),
                        ‘MultiLineString‘: new ol.style.Style({
                          stroke: new ol.style.Stroke({
                            color: ‘red‘,
                            width: 6
                          })
                        }),
                        ‘MultiPoint‘: new ol.style.Style({
                          image: image
                        }),
                        ‘MultiPolygon‘: new ol.style.Style({
                          stroke: new ol.style.Stroke({
                            color: ‘yellow‘,
                            width: 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],
                            width: 3
                          }),
                          fill: new ol.style.Fill({
                            color: ‘rgba(0, 0, 255, 0.1)‘
                          })
                        })
                      };
                    var styleFunction = function(feature) {
                        return styles[feature.getGeometry().getType()];
                    };
                    for (var i = 0; i < data.length; i++) {
                        var vectorSource = new ol.source.Vector({
                            features: (new ol.format.GeoJSON()).readFeatures(data[i])
                        });
                        var features = vectorSource.getFeatures();
                        for(var j=0;j<features.length;j++){
                            var feature = features[j];
                            var geom = feature.getGeometry().transform(‘EPSG:4326‘, ‘EPSG:3857‘);
                            feature.setGeometry(geom);
                        }
                        var vectorLayer = new ol.layer.Vector({
                            source: vectorSource,
                            style: styleFunction
                          });
                        vectorLayer.set("id", "zipshp"+i);
                           map.addLayer(vectorLayer);
                        //地图跳转范围
                        map.getView().setCenter([13654710.733, 4878822.641]);
                        map.getView().setZoom(8);
                    }
                }
            });
});

原文地址:https://www.cnblogs.com/giserhome/p/10128146.html

时间: 2024-10-09 13:31:25

openlayers入门开发系列之批量叠加zip压缩SHP图层篇的相关文章

openlayers入门开发系列之地图展示篇

GIS之家一直打算写一个openlayers入门开发系列文章(openlayers目前版本用4.x),只是一直没抽出时间来整理:本文是openlayers入门开发系列的第一篇:地图展示篇,后续会持续更新一系列入门开发文章. 整个系列的系统主界面会随着功能增加而对应改变,大体布局如下: 详细的实现过程见:这里 原文地址:https://www.cnblogs.com/giserhome/p/9425156.html

openlayers入门开发系列之地图导航控件篇

本篇的重点内容是利用openlayers来实现了地图导航控件功能,效果图如下: 实现思路如下: 创建一个地图控件基类,除了本篇的地图导航控件继承这个地图控件基类之外,后续的其他地图控件也是继承该基类 地图控件基类中创建地图导航控件函数 地图导航控件类 最后,地图导航控件初始化调用 详细的实现过程见:这里 原文地址:https://www.cnblogs.com/giserhome/p/9550661.html

openlayers入门开发系列之地图模态层篇

本篇的重点内容是为了到达自己想要的区域高亮效果,利用openlayers结合turf.js实现地图模态层功能,效果图如下: 实现思路 利用turf.js提供的difference相差函数,计算最大四至和裁剪区域的差值,这里的最大四至即:(-180,-90,180,90),由于底图是墨卡托投影坐标系的,所以我的代码实现过程中把经纬度转换墨卡托投影坐标:裁剪区域就是需要高亮的多边形,我这里是嘉兴市区域. 界面设计 //地图模态层 "<div style='height:25px;backgro

openlayers5-webpack 入门开发系列一初探篇(附源码下载)

前言 openlayers5-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 webpack 配置介绍文档详细的 webpack 文档配置介绍,适合新手查看,我也是边看边学 vscode 安装包下载,我这边用 vscode工具编译开发前端项目,个人觉的这款工具还不错 openlayers5 api文档介绍,详细介绍 openlayers5 每个类的函数以及属性等等 op

openlayers4 入门开发系列之前端动态渲染克里金插值 kriging 篇(附源码下载)

前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子,这个也是学习 openlayers4 的好素材. openlayers4 入门开发系列的地图服务基于 Geoserver 发布的,关于 Geoserver 方面操作的博客,可以参考以下几篇文章: geoserver 安装部署步骤 geoserver 发布地图服务 WMS geoserver 发布地

leaflet-webpack 入门开发系列一初探篇(附源码下载)

前言 leaflet-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 webpack 配置介绍文档详细的 webpack 文档配置介绍,适合新手查看,我也是边看边学 vscode 安装包下载,我这边用 vscode工具编译开发前端项目,个人觉的这款工具还不错 leaflet api文档介绍,详细介绍 leaflet 每个类的函数以及属性等等 leaflet 在线例子 l

leaflet-webpack 入门开发系列五地图卷帘(附源码下载)

前言 leaflet-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 webpack 配置介绍文档详细的 webpack 文档配置介绍,适合新手查看,我也是边看边学 vscode 安装包下载,我这边用 vscode工具编译开发前端项目,个人觉的这款工具还不错 leaflet api文档介绍,详细介绍 leaflet 每个类的函数以及属性等等 leaflet 在线例子 l

openlayers4 入门开发系列结合 echarts4 实现交通线流动图

前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子,这个也是学习 openlayers4 的好素材. openlayers4 入门开发系列的地图服务基于 Geoserver 发布的,关于 Geoserver 方面操作的博客,可以参考以下几篇文章: geoserver 安装部署步骤 geoserver 发布地图服务 WMS geoserver 发布地

arcgis api for js入门开发系列二不同地图服务展示(含源代码)

上一篇介绍了arcgis api离线部署,这篇开始正式介绍arcgis api for js开发:想要学习webgis开发,首先得熟悉了解前端技术,比如界面布局设计的html+css,核心的是javascript(js),arcgis api就是js写的,就是说想要开发gis功能前提下,你得熟悉了解js,不然你连源代码都看不懂.在这里,推荐esri官网的arcgis api for js:https://developers.arcgis.com/javascript/3/jsapi/:里面详细