基于arcgis js api 4.x开发点聚合效果

这篇具有很好参考价值的文章主要介绍了基于arcgis js api 4.x开发点聚合效果。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、代码
 

<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport"
          content="initial-scale=1,maximum-scale=1,user-scalable=no" />
    <title>
        Build a custom layer view using deck.gl | Sample | ArcGIS API for
        JavaScript 4.23
    </title>

    <link rel="stylesheet" href="http://localhost/arcgis_js_api_424/4.24/esri/css/main.css" />
    <script src="http://localhost/arcgis_js_api_424/4.24/init.js"></script>

    <style>
        html,
        body,
        #viewDiv {
            padding: 0;
            margin: 0;
            height: 100%;
            width: 100%;
        }
        #infoDiv {
            padding: 10px;
        }
    </style>

    <script>
        require(["esri/Map", "esri/views/MapView", "esri/Graphic", "esri/layers/GraphicsLayer",
            "esri/widgets/Editor",
            "esri/layers/TileLayer", "esri/layers/WMTSLayer", "esri/layers/WebTileLayer",
            "esri/geometry/Extent", "esri/geometry/Point",
            "esri/widgets/Sketch/SketchViewModel",
            "esri/layers/FeatureLayer", "esri/geometry/SpatialReference",
            "esri/symbols/SimpleFillSymbol", "esri/geometry/Polygon", "esri/symbols/SimpleMarkerSymbol",
            "esri/symbols/SimpleLineSymbol",
            "esri/renderers/HeatmapRenderer", "esri/renderers/UniqueValueRenderer", "esri/Color",
            "esri/layers/support/LabelClass", "esri/widgets/Legend", "esri/widgets/Expand",
        ], (
            Map,
            MapView, Graphic, GraphicsLayer, Editor,
            TileLayer, WMTSLayer, WebTileLayer, Extent, Point, SketchViewModel,
            FeatureLayer, SpatialReference, SimpleFillSymbol, Polygon, SimpleMarkerSymbol,
            SimpleLineSymbol, HeatmapRenderer,  
            UniqueValueRenderer, Color, LabelClass, Legend, Expand
        ) => {
            $.ajax({
                url: "./data/point.json",
                type: "get",
                dataType: "json",
                success: function (data) {
                    map = new Map({
                        //  basemap: "streets-vector"
                    });

                    console.log(data)
                    const view = new MapView({
                        container: "viewDiv",
                        map: map,
                        // center: [113.55, 34.78],
                        //zoom:12,
                        spspatialReference: {
                            wkid: 4547
                        },
                        extent: new Extent({
                            xmin: 344577.88,
                            ymin: 2380651.49,
                            xmax: 655422.12,
                            ymax: 5036050.38,
                            spatialReference: new SpatialReference({ wkid: 4547 })
                        })
                    });
                    var features = data.features;
                    let symbol = {
                        type: "simple-marker",  // autocasts as new SimpleMarkerSymbol()
                        style: "square",
                        color: "blue",
                        size: "18px",  
                        outline: {  // autocasts as new SimpleLineSymbol()
                            color: [255, 255, 0],
                            width: 3  // points
                        }
                    };
                    var graphicList = [];
                    for (var i = 0; i < 50000; i++) {
                        var feature = features[i];
                        if (i < 30000) {
                            graphicList.push(new Graphic({
                                geometry: new Point({
                                    x: feature.geometry.coordinates[0],
                                    y: feature.geometry.coordinates[1],
                                    spatialReference: {
                                        wkid: 4547
                                    }
                                }),
                                symbol: symbol,
                                attributes: { "ObjectID": i + 1, "PatrolStatus": "已巡","Rate":1.0 }
                            }));
                        }
                        if (i >= 30000) {
                            graphicList.push(new Graphic({
                                geometry: new Point({
                                    x: feature.geometry.coordinates[0],
                                    y: feature.geometry.coordinates[1],
                                    spatialReference: {
                                        wkid: 4547
                                    }
                                }),
                                symbol: symbol,
                                attributes: { "ObjectID": i + 1, "PatrolStatus": "未巡", "Rate": 0.0 }
                            }))
                        };
                    }


                    var renderer = {
                        type: "unique-value",
                        field: "PatrolStatus",
                        defaultSymbol: null,
                        uniqueValueInfos: [{
                            value: "已巡",
                            symbol: {
                                type: "simple-marker",  
                                style: "circle",
                                color: "rgb(182,232,105)",
                                size: "12px",  
                                outline: {  
                                    color: "rgb(140,203,23)",
                                    width: "4px",
                                }
                            }
                        }, {
                            value: "未巡",
                            symbol: {
                                type: "simple-marker", 
                                style: "circle",
                                color: "rgb(195,195,195)",
                                size: "12px",
                                outline: {  
                                    color: "rgb(164,164,164)",
                                    width: "4px",
                                }
                            }
                        }]
                    }

                    const clusterConfig = {
                        type: "cluster",
                        clusterRadius: 40,
                        maxScale: 5000,
                        popupTemplate: {
                            title: "巡检点聚类信息",
                            content: "此聚类表示 {cluster_count} 个巡检点",
                            fieldInfos: [{
                                fieldName: "cluster_count",
                                format: {
                                    places: 0,
                                    digitSeparator: true
                                }
                            }],
                            labelingInfo: [{
                                deconflictionStrategy: "none",
                                labelExpressionInfo: {
                                    expression: "Text($feature.cluster_count, '#,###')"
                                },
                                symbol: {
                                    type: "text",
                                    color: "#004a5d",
                                    font: {
                                        weight: "bold",
                                        family: "Noto Sans",
                                        size: "12px"
                                    }
                                },
                                labelPlacement: "center-center",
                            }],
                           
                            //clusterMinSize: "24px",
                            //clusterMaxSize: "60px",

                        }
                    };
                    let featureLayer = new FeatureLayer({
                        fields: [
                            {
                                name: "ObjectID",
                                alias: "ObjectID",
                                type: "oid"
                            },
                            {
                                name: "PatrolStatus",
                                alias: "巡检状态",//用于图例上显示中文
                                type: "string"
                            },
                            {
                                name: "Rate",
                                alias: "Rate",
                                type: "double"
                            }
                        ],
                        outFields: ["*"],
                        opacity: 1,
                        source: graphicList,
                        featureReduction: clusterConfig,
                        renderer: renderer,
                        popupTemplate: {
                            title: "巡检点信息",
                            content: [
                                {
                                    type: "fields",
                                    fieldInfos: [
                                        {
                                            fieldName: "ObjectID",
                                            label: "巡检ID"
                                        },
                                        {
                                            fieldName: "PatrolStatus",
                                            label: "巡检状态"
                                        },
                                       
                                    ]
                                }
                            ]
                        }

                    });

                    map.add(featureLayer);



                    const legend = new Legend({
                        view: view,
                        container: "legendDiv"
                    });
                    const infoDiv = document.getElementById("infoDiv");
                    view.ui.add(new Expand({
                        view: view,
                        content: infoDiv,
                        expandIcon: "list-bullet",
                        expanded: false
                    }), "top-left");
                    const toggleButton = document.getElementById("cluster");
                    toggleButton.addEventListener("click", () => {
                        let fr = featureLayer.featureReduction;
                        featureLayer.featureReduction = fr && fr.type === "cluster" ? null : clusterConfig;
                        toggleButton.innerText = toggleButton.innerText === "开启聚合" ? "取消聚合" : "开启聚合";
                    });

                }
            })
        });

    </script>
</head>

<body>
    <div id="viewDiv"></div>
    <div id="infoDiv" class="esri-widget">
        <button id="cluster" class="esri-button">取消聚合</button>
        <div id="legendDiv"></div>
    </div>
</body>
</html>

二、效果

1.开启聚合

基于arcgis js api 4.x开发点聚合效果,arcgis,javascript,开发语言
2.取消聚合

基于arcgis js api 4.x开发点聚合效果,arcgis,javascript,开发语言文章来源地址https://www.toymoban.com/news/detail-806065.html

到了这里,关于基于arcgis js api 4.x开发点聚合效果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ArcGIS API for JavaScript 3.44 地图Demo示例合集

    用于JavaScript的ArcGIS API是在web应用程序中嵌入地图和任务的轻量级方法。您可以从ArcGIS Online、您自己的ArcGIS Server或其他服务器获取这些地图。 描述 此示例演示如何创建一个完整的页面映射应用程序。此示例创建一个以旧金山市为中心的新地图,并将其中一个预定义的基本地

    2024年02月13日
    浏览(45)
  • ArcGIS API for JavaScript 4.x 教程(二)切换基础地图图层

    了解如何更改地图中的基础地图图层。 基础地图图层: 基础地图层是用于访问和显示来自基础地图层服务的数据的层。它为地图或场景提供视觉和地理上下文,通常包含具有管理边界和地名的全局数据。 基本地图图层服务提供了许多基本地图图层样式,例如地形、街道和图

    2024年02月14日
    浏览(35)
  • ArcGIS API for JavaScript 4.x 教程(一) 显示一张地图

    了解如何创建和显示带有基本地图图层的地图。 地图包含地理数据层。地图包含一个基本地图层,以及一个或多个数据层(可选)。可以使用地图视图显示地图的特定区域,并设置位置和缩放级别。 本教程将向您展示如何使用地形底图层创建和显示加利福尼亚州圣莫尼卡山

    2024年02月14日
    浏览(45)
  • 【01】mapbox js api加载arcgis切片服务

    第三方的mapbox js api加载arcgis切片服务,同时叠加在天地图上,天地图坐标系web墨卡托。 形如这种地址去加载http://zjq2022.gis.com:8080/demo/loadmapboxtdt.html 需要制作一个和天地图比例尺级别以及切片大小等一样的切片方案,可以通过arcmap或者arcgispro制作。如图: 具体的切片信息参数

    2024年01月19日
    浏览(50)
  • 【02】mapbox js api加载arcgis切片服务

    第三方的mapbox js api加载arcgis切片服务,同时叠加在mapbox自带底图上 形如这种地址去加载: http://zjq2022.gis.com:8080/demo/loadmapbox.html arcgis切片服务参考链接思路:【01】mapbox js api加载arcgis切片服务-CSDN博客

    2024年01月19日
    浏览(45)
  • ArcGIS API for JavaScript 4.x 教程(四) 添加点、线和多边形

    了解如何在地图中显示点、线和多边形图形。 图形是用于在地图或场景中显示点、线、多边形和文本的视觉元素。图形由几何图形、符号和属性组成,单击时可以显示弹出窗口。您通常使用图形来显示未连接到数据库(即GPS位置)的地理数据。 在本教程中,您将学习如何将

    2024年02月13日
    浏览(60)
  • arcgis for javascript api4.26 本地tomcat部署,以及解决跨域访问问题

    一、配置java_jdk以及tomcat arcgis for javascript api 部署到本地服务器,可以是 iis ,也可以是 tomcat ,我这里是部署到tomcat,所以就 介绍一下tomcat上部署的步骤 。 如果电脑上有本地服务器的,可以跳过这一章,直接从第二章开始看 下载arcgis for javascript API 要部署到tomcat,咱得有tomcat

    2024年02月07日
    浏览(66)
  • arcgis javascript api4.x加载天地图wgs84(wkid:4326)坐标系

    使用arcgis javascript api4.x以basetilelayer方式加载天地图wgs84(wkid:4326)坐标系 效果: 提示:(下述三个文件放同一个文件夹下) 4326.js MyCustomTileLayer.js loadtdt4326.html https://www.cnblogs.com/hjyjack9563-bk/p/16067633.html

    2024年01月17日
    浏览(48)
  • Webpack打包arcgis js api 3.x纯html+JS+CSS项目

    小项目。纯HTML+JS+CSS已经部署上线,但是没有做混淆加密,需要进行混淆加密 目前代码里面需要混淆加密的有main.js,其他的不用混淆加密。所以只需要对main.js进行混淆加密就可,但是要保证混淆加密之后能够访问方法。 由于目前在index.html的script使用import导入main.js里面的方

    2024年02月11日
    浏览(62)
  • arcgis javascript api4.x加载天地图web墨卡托(wkid:3857)坐标系

    效果: 示例代码:

    2024年01月17日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包