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

实现思路:首先加载一个地图,然后调用查询功能,将符合条件的要素找出来,通过添加画图图层graphiclayer,将元素高亮,显示到页面上。

1.加载地图代码:

<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");
        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/ModelPipe_BaseMap/MapServer");
            map.addLayer(tiledLayer1);
        }
        dojo.addOnLoad(init);
    </script>
</head>
<body>
<div id="map"></div>
</body>
</html>
如图:


2.查看地图属性,并通过属性获取想要展示的点。

从浏览器中打开页面 http://192.168.0.181/ArcGIS/rest/services/ModelPipe_BaseMap/MapServer/3 

如图:

图中Fields一栏表示属性,这里我们用OBJECTID=275139,来获取地图中一个元素,并将其高亮显示。然后将此元素的所有属性作为信息框中的内容放进地图中。

代码:

<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/ModelPipe_BaseMap/MapServer");
            map.addLayer(tiledLayer1);
        }
        dojo.addOnLoad(init);
        function findPoint(ii){
            var cityQueryTask = new esri.tasks.QueryTask("http://192.168.0.181/ArcGIS/rest/services/ModelPipe_BaseMap/MapServer/3");
            var cityQuery = new esri.tasks.Query();
            cityQuery.outFields=["*"];
            cityQuery.returnGeometry=true;
            cityQuery.outSpatialReference=map.spatialReference;
            cityQuery.where="ElementId="+ii;
            cityQueryTask.execute(cityQuery,addCityFeatureSetToMap);
        }
        function addCityFeatureSetToMap(featureSet){
            var symbol = new esri.symbol.SimpleMarkerSymbol();
            symbol.setColor(new dojo.Color([0, 0, 255]));
            var infoTemplate = new esri.InfoTemplate("message", "${*}");
            var graphiclayer=new esri.layers.GraphicsLayer();
            map.addLayer(graphiclayer);
            dojo.forEach(featureSet.features, function (feature) {
                graphiclayer.add(feature.setSymbol(symbol).setInfoTemplate(infoTemplate));
                
            });

        }
    </script>
</head>
<body>
<div id="map"></div>
<div οnclick="findPoint('275139')">click me</div>
</body>
</html>
如图:

如图所示,点击按钮 click me ,则会有蓝点显示在地图上,点击蓝点,显示由query查询出来的所有相关属性。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值