arcgis api for js入门开发系列二十三批量叠加zip压缩SHP图层

本文介绍如何使用ArcGIS API for JS批量加载压缩的SHP图层,包括点、线、面要素,并展示了核心代码实现,适用于前端地图应用开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前写过一篇前端js叠加shp图层的文章:arcgis api for js入门开发系列十叠加SHP图层

那是一次只能加载一个.shp文件或者.dbf文件,本篇则是js直接加载压缩文件zip形式shp,可以批量加载点、线、面shp图层;下面截图的zip文件,分别是一个点、线、面shp图层压缩而来

 

前端地图加载展示效果图如下:

实现的核心代码如下:

//叠加压缩SHP图层,批量加载显示
$("#zipshp").click(function () {
            shp("js/main/shpJS/gishome.zip").then(function (data) {
                if (data && data.length > 0) {
                    map.graphics.clear();
                    for (var i = 0; i < data.length; i++) {
                        var features = data[i].features;
                        for (var j = 0; j < features.length; j++) {
                            feature = features[j];
                            var graphic = getGraphic(feature);
                            map.graphics.add(graphic);
                        }
                    }
                }
            });
            //根据feature几何类型动态构造对应的要素
            function getGraphic(feature) {
                var graphic = null;
                var symbol = null;
                switch (feature.geometry.type) {
                    case "Point"://构造点要素
                        symbol = new esri.symbol.PictureMarkerSymbol(getRootPath() + "Content/images/poi/dw1.png", 20, 20);
                        var mappoint = new esri.geometry.Point(feature.geometry.coordinates[0], feature.geometry.coordinates[1], new esri.SpatialReference(map.spatialReference.wkid));
                        graphic = new esri.Graphic(mappoint, symbol);
                        break;
                    case "LineString"://构造线要素
                        symbol = new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([255, 0, 0]), 6);
                        var polyline = new esri.geometry.Polyline(feature.geometry.coordinates);
                        graphic = new esri.Graphic(polyline, symbol);
                        break;
                    case "Polygon"://构造面要素
                        symbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new esri.Color([255, 0, 0]), 3),
                                                         new esri.Color([125, 125, 125, 0.35]));
                        var polygon = new esri.geometry.Polygon(feature.geometry.coordinates);
                        graphic = new esri.Graphic(polygon, symbol);
                        break;
                }

                return graphic;
            }
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值