arcgis api for js之自定义范围查询

本文介绍了一个使用ArcGIS API实现自定义地图范围的功能。通过绘制工具,用户可以自定义地图上的多边形范围,并基于此范围进行空间查询,展示与自定义范围相交的地图要素。涉及的技术包括HTML、JavaScript、ArcGIS API、jQuery等。

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

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>自定义范围</title>
    <!--arcgis api-->
    <link data-id="esri_css" rel="stylesheet" type="text/css"
          href="http://localhost/arcgis_js_api_v321/library/3.21/3.21/esri/css/esri.css">
    <link data-id="tundra_css" rel="stylesheet" type="text/css"
          href="http://localhost/arcgis_js_api_v321/library/3.21/3.21/dijit/themes/tundra/tundra.css">
    <script type="text/javascript" src="http://localhost/arcgis_js_api_v321/library/3.21/3.21/init.js"></script>
    <!--jquery-->
    <script type="text/javascript" src="libs/jquery/jquery.js"></script>
    <style>
        body,html{
            width: 100%;
            height: 100%;
        }
    </style>
</head>
<body>
    <div style="float: right">
        <button id="def">自定义范围</button>
    </div>
    <div id="myMap" style="width: 100%;height: 100%;">
        //放地图
    </div>

    <script>
        var myMap;
        var graphicLayer;
        require([
            "esri/map",
            "esri/layers/ArcGISDynamicMapServiceLayer",
            "esri/toolbars/draw",
            "esri/layers/GraphicsLayer",
            "esri/symbols/SimpleLineSymbol",
            "esri/symbols/SimpleFillSymbol",
            "esri/graphic",
            "esri/Color",
            "esri/tasks/query",
            "esri/tasks/QueryTask",
        ],function (Map,ArcGISDynamicMapServiceLayer,Draw,GraphicsLayer,SimpleLineSymbol,
                    SimpleFillSymbol,Graphic,Color, Query,QueryTask,) {

            window.onload = function () {
                init();
            }
            function init(){
                myMap = new Map("myMap");
                var dlayer = new ArcGISDynamicMapServiceLayer("http://localhost/OneMapServer/rest/services/Raster/MapServer");
                var traLayer = new ArcGISDynamicMapServiceLayer("http://localhost/arcgis/rest/services/SQJC/TraDataset2017JN/MapServer");
                myMap.addLayer(dlayer);//添加地图
                myMap.addLayer(traLayer);//添加地图
                graphicLayer = new GraphicsLayer();
                myMap.addLayer(graphicLayer);
                $("#def").click(function () {
                    drawExtent();
                });

            }
            function drawExtent() {
                graphicLayer.clear();
                var toolbar = new Draw(myMap);//创建绘图工具对象
                toolbar.activate(Draw.POLYGON);//激活绘图工具
                toolbar.on("draw-complete",function (geographicGeometry) {
                    toolbar.deactivate();//关闭绘图工具
                    graphicLayer.clear();
                    var geometry = geographicGeometry.geometry;
                    switch (geometry.type) {
                        case "polygon":
                            var symbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([255, 0, 0]), 2), new Color([0, 255, 0, 0.5]));
                            break;
                    }
                    graphicLayer.add(new Graphic(geometry, symbol));

                    var query = new Query();
                    query.geometry = geometry;
                    query.spatialRelationship = Query.SPATIAL_REL_INTERSECTS;
                    query.outSpatialReference = myMap.spatialReference;
                    query.returnGeometry = true;
                    query.outFields=["*"];

                    var queryTask = new QueryTask("http://localhost/arcgis/rest/services/SQJC/TraDataset2017JN/MapServer/12");
                    queryTask.execute(query,function (result) {
                        console.log(result);
                    },function (error) {
                        console.log(error);
                    })
                })

            }

        })
        
    </script>

</body>
</html>

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值