打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
arcgis api for js入门开发系列八聚合效果

 

上一篇实现了demo的图层控制模块,本篇新增聚合效果,截图如下(源代码见文章底部):

聚合效果实现的思路如下:

1.map.html引用聚合包,项目已经包含进来了的聚合文件夹:

    <script type="text/javascript">        //配置arcgis拓展解析天地图服务类引用的路径        dojoConfig = {            parseOnLoad: true,            paths: {                ExtensionClusterLayer: location.pathname.replace(/\/[^/]+$/, "") + "/js/main/extras/ClusterLayer"//聚合效果拓展类引用            }        };    </script>

2.map.js初始化函数调用聚合效果的js接口,map.clusterLayer.js实现聚合核心效果的js文件

    //加载聚合效果图    DCI.cluster.Init(map);

3.map.clusterLayer.js实现聚合核心思路:

(1)聚合数据来源:调用地图动态服务的餐饮图层作为聚合效果的数据源

//采用地图服务的餐饮图层来作为聚合效果的数据来源var typeUrl = MapConfig.vecMapUrl + "/" + 0;//餐饮图层
var queryTask = "";var query = new esri.tasks.Query();query.returnGeometry = true;query.outFields = ["NAME"];query.where = "1=1";queryTask = new esri.tasks.QueryTask(typeUrl);queryTask.execute(query, DCI.cluster.resultInfo);

(2)查询地图服务结果渲染聚合效果:

        /**         * 餐饮图层查询         */        resultInfo: function (results) {            var data = [];//聚合数据源定义            if (results.features.length > 0) {                for (var i = 0; i < results.features.length; i++) {//遍历查询的图层结果集合,构造聚合效果的数据源                    var info = {};                    var latlng = results.features[i].geometry;                    var webMercator = esri.geometry.webMercatorUtils.geographicToWebMercator(latlng);//地理坐标系必须要转换摩卡托的投影坐标系,不然聚合没效果                    info.x = webMercator.x;                    info.y = webMercator.y;                    info.attributes = results.features[i].attributes;//气泡窗口模型的属性                    data.push(info);                }                // popupTemplate to work with attributes specific to this dataset                var popupTemplate = new esri.dijit.PopupTemplate({//气泡窗口模型定义                    "title": "",                    "fieldInfos": [{                        "fieldName": "NAME",//字段值                        "label": "名称:",//字段显示别名                        visible: true//设置是否可见                    }]                });                // cluster layer that uses OpenLayers style clustering                DCI.cluster.clusterLayer = new ExtensionClusterLayer.ClusterLayer({                    "data": data,//绑定聚合数据源                    "distance": 8000000,//设置聚合距离,根据地图分辨率来设置合适的值,默认是50                    "id": "clusters",                    "labelColor": "#fff",//图标字体颜色值,白色字体                    "labelOffset": 10,//字体偏移位置                    "resolution": DCI.cluster.map.extent.getWidth() / DCI.cluster.map.width,//计算当前地图的分辨率                    "singleColor": "#888",                    "singleTemplate": popupTemplate//绑定气泡窗口模型                });                //下面是设置聚合效果模型,根据聚合的点数来分三个等级,不同等级用不同的大小以及颜色图标来表示,0-2为蓝色;2-200为绿色;200-1001为红色                var defaultSym = new esri.symbol.SimpleMarkerSymbol().setSize(4);                var renderer = new esri.renderers.ClassBreaksRenderer(defaultSym, "clusterCount");                var picBaseUrl = getRootPath() + "Content/images/clusterlayer/";                var blue = new esri.symbol.PictureMarkerSymbol(picBaseUrl + "BluePin1LargeB.png", 32, 32).setOffset(0, 15);                var green = new esri.symbol.PictureMarkerSymbol(picBaseUrl + "GreenPin1LargeB.png", 64, 64).setOffset(0, 15);                var red = new esri.symbol.PictureMarkerSymbol(picBaseUrl + "RedPin1LargeB.png", 72, 72).setOffset(0, 15);                renderer.addBreak(0, 2, blue);                renderer.addBreak(2, 200, green);                renderer.addBreak(200, 1001, red);                //设置聚合图层的分级模板                DCI.cluster.clusterLayer.setRenderer(renderer);                //聚合图层叠加在地图展示                DCI.cluster.map.addLayer(DCI.cluster.clusterLayer);            }        }

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
arcgis api 3.x for js 入门开发系列二十二地图模态层(附源码下载)
在地图中调用显示FeatureLayer并进行render、popupTemplate、添加图例等相关内容的设置
[ArcGIS API for JavaScript 4.8] Sample Code-Popups-1-popupTemplate的概念和popup中属性字段值的多种表现形式
arcgis api 4.x for js之基础地图篇
[ArcGIS API for JavaScript 4.8] Sample Code-Get Started-popups简介
ArcGIS JS 3.x使用webgl绘制热力图
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服