arcgis api for javascrpit 基于dojo框架的query查询功能2

上一个例子中展示的是通过图层中某个元素的属性来进行元素的查询,这次我们需要通过直接点击地图上的某一要素,实现对这个要素的查询功能。

第一步,创建地图:

<html>
<head>
    <title>dojo.map</title>
    <link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/2.0/js/dojo/dijit/themes/tundra/tundra.css" />
    <script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis?v=2.0"></script>
    <script type="text/javascript">
        dojo.require("esri.map");
        dojo.require("esri.tasks.query");
        var map;
        function init(){
            var startExtent = new esri.geometry.Extent({"xmin":73384,"ymin":251775,"xmax":133790,"ymax":321048,"spatialReference":{"wkid":102100}} );
            //create map
            map = new esri.Map("map", {extent: startExtent});
            var tiledLayer1 = new esri.layers.ArcGISTiledMapServiceLayer("http://192.168.0.181/ArcGIS/rest/services/GISBaseMap/MapServer");
            map.addLayer(tiledLayer1);
        }
        dojo.addOnLoad(init);
    </script>
</head>
<body>
<div id="map"></div>
</body>
</html>
效果图:

第二步,监听地图鼠标点击事件,通过鼠标点击事件获取坐标,然后通过坐标查询出图层中坐标对应的元素,高亮显示。点击高亮显示区域,显示元素详细信息。

代码:

<html>
<head>
    <title>dojo.map</title>
    <link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/2.0/js/dojo/dijit/themes/tundra/tundra.css" />
    <script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis?v=2.0"></script>
    <script type="text/javascript">
        dojo.require("esri.map");
        dojo.require("esri.tasks.query");
        var map;
        var query,queryTask;
        var symbol,infoTemplate;
        function init(){
            var startExtent = new esri.geometry.Extent({"xmin":73384,"ymin":251775,"xmax":133790,"ymax":321048,"spatialReference":{"wkid":102100}} );
            //create map
            map = new esri.Map("map", {extent: startExtent});
            dojo.connect(map,"onClick",executeQueryTask);
            var tiledLayer1 = new esri.layers.ArcGISTiledMapServiceLayer("http://192.168.0.181/ArcGIS/rest/services/GISBaseMap/MapServer");
            map.addLayer(tiledLayer1);
            queryTask = new esri.tasks.QueryTask("http://192.168.0.181/ArcGIS/rest/services/GISBaseMap/MapServer/1")
            query=new esri.tasks.Query();
            query.returnGeometry=true;
            query.outFields = [];
            infoTemplate = new esri.InfoTemplate("sss","ssss");
            symbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_DASHDOT, new dojo.Color([255,0,0]), 2), new dojo.Color([255,255,0,0.5]));
        }
        dojo.addOnLoad(init);
        function executeQueryTask(evt){
            query.geometry=evt.mapPoint;
            queryTask.execute(query,showResults);
        }
        function showResults(featureSet){
            map.graphics.clear();
            for(var i= 0;i<featureSet.features.length;i++){
                var graphic = featureSet.features[0];
                graphic.setSymbol(symbol);
                graphic.setInfoTemplate(infoTemplate);
                map.graphics.add(graphic);
            }
        }
    </script>
</head>
<body>
<div id="map"></div>
</body>
</html>

如图:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值