Arcgis for Js实现graphiclayer的空间查询_weixin_33849942的博客-程序员秘密

本节讲的是Arcgis for Js的针对graphiclayer的空间查询,内容非常easy。代码例如以下:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"/>
    <title>Simple Map</title>
    <link rel="stylesheet" href="http://localhost/arcgis_js_api/library/3.9/3.9/js/esri/css/esri.css">
    <style>
        html, body, #map {
            height: 100%;
            margin: 0;
            padding: 0;
        }

        body {
            background-color: #FFF;
            overflow: hidden;
            font-family: "Trebuchet MS";
        }
        #map_ctrl{
            z-index: 99;
            position: absolute;
            top: 20pt;
            right: 10pt;
            background: #fff;
        }
        .button{
            padding: 3px 8px;
            background: #eee;
            text-align: center;
            font-size: 12px;
            font-family: "微软雅黑";
        }
        .button:hover,.attr_ctrl:hover{
            background: #ccc;
            cursor: pointer;
        }
    </style>
    <script src="http://localhost/arcgis_js_api/library/3.9/3.9/init.js"></script>
    <script src="jquery-1.8.3.js"></script>
    <script>
        var iconPath = "M24.0,2.199C11.9595,2.199,2.199,11.9595,2.199,24.0c0.0,12.0405,9.7605,21.801,21.801,21.801c12.0405,0.0,21.801-9.7605,21.801-21.801C45.801,11.9595,36.0405,2.199,24.0,2.199zM31.0935,11.0625c1.401,0.0,2.532,2.2245,2.532,4.968S32.4915,21.0,31.0935,21.0c-1.398,0.0-2.532-2.2245-2.532-4.968S29.697,11.0625,31.0935,11.0625zM16.656,11.0625c1.398,0.0,2.532,2.2245,2.532,4.968S18.0555,21.0,16.656,21.0s-2.532-2.2245-2.532-4.968S15.258,11.0625,16.656,11.0625zM24.0315,39.0c-4.3095,0.0-8.3445-2.6355-11.8185-7.2165c3.5955,2.346,7.5315,3.654,11.661,3.654c4.3845,0.0,8.5515-1.47,12.3225-4.101C32.649,36.198,28.485,39.0,24.0315,39.0z";
        var CITY_DATA={
            "total":34,
            "items":[{"id":1,"name":"乌鲁木齐","X":87.575829,"Y":43.782212},
                {"id":2,"name":"拉萨","X":91.162998,"Y":29.71042},
                {"id":3,"name":"西宁","X":101.797303,"Y":36.593642},
                {"id":4,"name":"兰州","X":103.584297,"Y":36.119086},
                {"id":5,"name":"成都","X":104.035508,"Y":30.714179},
                {"id":6,"name":"重庆","X":106.519115,"Y":29.478925},
                {"id":7,"name":"贵阳","X":106.668071,"Y":26.457312},
                {"id":8,"name":"昆明","X":102.726775,"Y":24.969385},
                {"id":9,"name":"银川","X":106.167225,"Y":38.598524},
                {"id":10,"name":"西安","X":108.967128,"Y":34.276112},
                {"id":11,"name":"南宁","X":108.233931,"Y":22.748296},
                {"id":12,"name":"海口","X":110.346181,"Y":19.96992},
                {"id":13,"name":"广州","X":113.226683,"Y":23.18307},
                {"id":14,"name":"长沙","X":112.947928,"Y":28.169916},
                {"id":15,"name":"南昌","X":115.893715,"Y":28.652363},
                {"id":16,"name":"福州","X":119.246768,"Y":26.070765},
                {"id":17,"name":"台北","X":121.503567,"Y":25.008274},
                {"id":18,"name":"杭州","X":120.183046,"Y":30.330584},
                {"id":19,"name":"上海","X":121.449707,"Y":31.253361},
                {"id":20,"name":"武汉","X":114.216597,"Y":30.579253},
                {"id":21,"name":"合肥","X":117.262302,"Y":31.838353},
                {"id":22,"name":"南京","X":118.805692,"Y":32.085022},
                {"id":23,"name":"郑州","X":113.6511,"Y":34.746308},
                {"id":24,"name":"济南","X":117.048331,"Y":36.60841},
                {"id":25,"name":"石家","X":114.478215,"Y":38.033276},
                {"id":26,"name":"太原","X":112.483066,"Y":37.798404},
                {"id":27,"name":"呼和浩特","X":111.842806,"Y":40.895751},
                {"id":28,"name":"天津","X":117.351094,"Y":38.925719},
                {"id":29,"name":"沈阳","X":123.296299,"Y":41.801604},
                {"id":30,"name":"长春","X":125.26142,"Y":43.981984},
                {"id":31,"name":"哈尔","X":126.567138,"Y":45.69381},
                {"id":32,"name":"北京","X":116.068276,"Y":39.892225},
                {"id":33,"name":"香港","X":114.093117,"Y":22.427852},
                {"id":34,"name":"澳门","X":113.552482,"Y":22.184495}
            ]
        };
        var map, mapCenter;
        var drawToolbar, selectedGraphics=new Array();
        require([
            "esri/map",
            "esri/layers/ArcGISTiledMapServiceLayer",
            "esri/layers/FeatureLayer",
            "esri/layers/GraphicsLayer",
            "esri/geometry/Point",
            "esri/symbols/PictureMarkerSymbol",
            "esri/symbols/SimpleLineSymbol",
            "esri/renderers/SimpleRenderer",
            "dojo/_base/Color",
            "dojo/on",
            "dojo/dom",
            "dojo/domReady!"],
        function(Map,
             Tiled,
             FeatureLayer,
             GraphicsLayer,
             Point,
             PictureMarkerSymbol,
             SimpleLineSymbol,
             SimpleRenderer,
             Color,
             on,
             dom)
        {
            map = new Map("map", {logo:false,slider: true});
            var tiled = new Tiled("http://localhost:6080/arcgis/rest/services/chinamap/MapServer");
            map.addLayer(tiled,0);
            var chartLayer = new GraphicsLayer({"id":"chartLayer"});
            map.addLayer(chartLayer,1);
            mapCenter = new Point(103.847, 36.0473, map.spatialReference);
            map.centerAndZoom(mapCenter,4);
            addReadPopup(CITY_DATA);
            //加入红气泡
            function addReadPopup(data){
                var items= data.items;
                for(var i=0;i<data.total;i++){
                    var pt=new Point(items[i].X,items[i].Y,map.spatialReference);
                    var graphic = new esri.Graphic(pt,createSymbol(iconPath, "#ff0000"),items[i]);
                    chartLayer.add(graphic);
                }
            };
            function createSymbol(path, color){
                var markerSymbol = new esri.symbol.SimpleMarkerSymbol();
                markerSymbol.setPath(path);
                markerSymbol.setColor(new dojo.Color(color));
                markerSymbol.setOutline(null);
                return markerSymbol;
            };

            drawToolbar = new esri.toolbars.Draw(map);
            drawToolbar.on("draw-end",showResults);
            on(dom.byId("extent"), "click", function(){
                map.setMapCursor("pointer");
                for(var i= 0, total=selectedGraphics.length;i<total;i++){
                    selectedGraphics[i].symbol = createSymbol(iconPath,"#f00");
                    chartLayer.redraw();
                }
                selectedGraphics=[];
                drawToolbar.activate(esri.toolbars.Draw.EXTENT);
            });

            function showResults(extent){
                drawToolbar.deactivate();
                map.setMapCursor("default");
                var graphics = chartLayer.graphics;
                for(var i= 0, total=graphics.length;i<total;i++){
                    if(extent.geometry.contains(graphics[i].geometry)){
                        selectedGraphics.push(graphics[i]);
                        graphics[i].symbol = createSymbol(iconPath,"#0ff");
                        chartLayer.redraw();
                    }
                }
            };
        });
    </script>
</head>

<body>
<div id="map">
    <div id="map_ctrl">
        <a id="extent" class="button">矩 形</a>
    </div>
</div>
</body>
</html>

实现后的效果例如以下:


初始状态


选择框 


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33849942/article/details/85895678

智能推荐

华为云备案问题总结_华为云域名备案期间云服务器可以正常使用吗_coding_python的博客-程序员秘密

登录地址:https://console.huaweicloud.com之后输入你的账号和密码;如果没有请先注册。华为云服务器的备案比较智能,不用申请备案号,可以自动获取(账号下面先要有服务器);在首次提交备案之后,收到华为云的备案信息反馈,比较郁闷;他要我上传域名证书,但是没有给我域名证书的上传按钮;华为的人工服务比较赞,是我遇到所有的人工服务:接入最快,解决问题最快的(没有之一...

doTag标签中的属性值的设置_金含的博客-程序员秘密

1.java代码如下:.package com.eduask.tag;import java.io.IOException;import javax.servlet.jsp.JspException;import javax.servlet.jsp.PageContext;import javax.servlet.jsp.tagext.SimpleTagSu

初创企业购买企业邮箱_什么是技术债务? 为什么几乎每个初创企业都拥有它?..._cumian9828的博客-程序员秘密

初创企业购买企业邮箱by Trey Huffine 通过Trey Huffine 什么是技术债务? 为什么几乎每个初创企业都拥有它? (What is technical debt? And why does almost every startup have it?)Technical debt is any code added now that will take more work ...

Linux centOS8.1安装python 3.9.1教程_centos8 db4-devel_RacheKs的博客-程序员秘密

安装过程中遇到的最大问题是:db4-devel和libpcap-devel依赖缺失进入root账户完成以下操作1. 安装依赖:第一步:yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel遇到的问题是:在使用centOS8安装python3.9.1时无法找到d

redis桌面管理工具 redis-desktop-manager使用指南_redisdesktopmanager_常乐_smile的博客-程序员秘密

概要:一款好用的redis桌面管理工具,支持命令控制台操作,以及常用,查询key,rename,delete等操作。下载软件,请点击下面链接,进入下载页,选择对应版本:https://redisdesktop.com/download  redisdesktop桌面管理工具 操作使用如下图:      一、新建连接输入redis主机host,端口号port,再起个生动形象,...

随便推点

Python图像处理库PIL的ImageDraw模块之画出四边形_pil 画四边形_pursuit_zhangyu的博客-程序员秘密

参考博客:https://blog.csdn.net/icamera0/article/details/50747084Polygon定义:draw.polygon(xy,options)含义:绘制一个多边形。多边形轮廓由给定坐标之间的直线组成,在最后一个坐标和第一个坐标间增加了一条直线,形成多边形。坐标列表是包含2元组[(x,y),…]或者数字[x,y,…]的任何序列对象。它最少包括3个坐标值。...

linux lftp 自动连接,linux lftp重新连接_weixin_39805883的博客-程序员秘密

FTP的安装与配置安装前准备vsftpd是linux下的一款小巧轻快,安全易用的FTP服务器软件,是一款在各个Linux发行版中最受推崇的FTP服务器软件。1.安装vsftpd,直接yum 安装就可以了yum install -y vsftpd出现下图表示安装成功。2.相关配置文件:cd /etc/vsftpd/etc/vsftpd/vsftpd.conf//主配置文件,核心配置文件/etc/v...

输入银行卡号码_weixin_33809981的博客-程序员秘密

package cn.dlpu.lby;import java.util.Scanner;public class Xinyongkahaoma { /* 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心, 因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。 该校验的过程: 1、从卡号最后一位数字开始,逆...

微信小程序的update使用的问题_灰鸽私塾的博客-程序员秘密

微信小程序的update使用的问题1、使用更新的时候,更新的item在数据库中必须有_openid2、以上的只能自己更新自己,但不能更新别人的item(如点赞的时候只能给自己点赞才能成功)3、解决的方法:使用update时直接在云函数中处理就不会出现2的问题...

YTU OJ 3493 问题 A: FileStream读文件_和你熟的博客-程序员秘密

YTU OJ 3493 问题 A: FileStream读文件很多小伙子是不是做这题直接Console.WriteLine()打印样例输出蒙混过关?也应该有很多找不到myFile.dic这个文件,我一开始以为是取的文件路径出了问题,后来发现,原来oj根本没有这个文件。不能靠打印混过去,那只能自己创建一个myFile.dic了using System;using System.Collections.Generic;using System.Linq;using System.Text;u

安卓模拟器按键_51模拟器app下载|51模拟器 3.2.1.2 最新版_weixin_39957805的博客-程序员秘密

这款软件在多维度的领域都比较有自己的想法,虽然不至于因为一些小事来个程序员祭天,但是主创人员对于应用的品质一直是比较尊崇的,不是随便就能上线的。而且在一些功能上都有突出的表现,值得尝试。51模拟器最新版是款针对一些安卓游戏在电脑上运行的安卓模拟器。51安卓模拟器为用户提供海量游戏定时更新,所有游戏和应用可完美兼容市面上的绝大部分手机。51安卓模拟器还支持多开,还有各种游戏辅助工具选择它们让你玩游戏...