JavaScript基础教程 ArcGIS api for javascript——查询,然后单击显示信息窗口
沉沙 2018-10-31 来源 : 阅读 3691 评论 0

摘要:本篇教程介绍了JavaScript基础教程 ArcGIS api for javascript——查询,然后单击显示信息窗口,希望阅读本篇文章以后大家有所收获,帮助大家对JavaScript的理解更加深入。

本篇教程介绍了JavaScript基础教程 ArcGIS api for javascript——查询,然后单击显示信息窗口,希望阅读本篇文章以后大家有所收获,帮助大家对JavaScript的理解更加深入。

<


本例展示如何配置查询任务为示例的工作流程:
1.用户单击一个要素来加亮显示。
2.用户再一次单击要素来查看属性信息的 InfoWindow。
本例查询USA州,因此ESRI_StateCityHighway_USA的州图层被传给QueryTask构造函数。
第一次鼠标单击通过下面的事件监听器捕获:
dojo.connect(map, "onClick", executeQueryTask);
发生单击时,executeQueryTask函数被调用去执行查询,然后showResults函数增加图形。
当用户单击高亮的图形时,第二次鼠标单击默认被捕获。为了格式化信息窗口,应用使用showResults函数调用 graphic.setInfoTemplate应用的 InfoTemplate。
 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "//www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=7" />
    <title>QueryTask with geometry, results as an InfoWindow</title>
    <link rel="stylesheet" type="text/css"   
    href="//serverapi.arcgisonline.com/jsapi/arcgis/1.6/js/dojo/dijit/themes/tundra/tundra.css">
    <script type="text/javascript" src="//serverapi.arcgisonline.com/jsapi/arcgis/?v=1.6"></script>
    <script type="text/javascript" language="Javascript">
      dojo.require("esri.map");
      dojo.require("esri.tasks.query");

      var map, queryTask, query;
      var symbol, infoTemplate;

      function init() {
        //创建地图
        map = new esri.Map("mapDiv");

        //创建并添加动态层
        var layer = new esri.layers.ArcGISDynamicMapServiceLayer("//sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer");
        map.addLayer(layer);

        //监听click事件,当用户点击地图时执行executeQueryTask方法
        dojo.connect(map, "onClick", executeQueryTask);

        //建立查询任务
        queryTask = new esri.tasks.QueryTask("//sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer/1");

        //监听onComplete事件的处理结果,使用queryTask.execute方法回调
        //dojo.connect(queryTask, "onComplete", showResults);

        //建立查询过滤器
        query = new esri.tasks.Query();
        query.returnGeometry = true;
        query.outFields = ["STATE_NAME",
        "STATE_FIPS", "STATE_ABBR", "HYPERLINK", "AREA"];

        //在信息窗口创建infoTemplate
        //${属性名}将取代目前的功能和属性值
        infoTemplate = new esri.InfoTemplate("${STATE_NAME}", "State Fips:${STATE_FIPS}<br />Abbreviation: ${STATE_ABBR}<br />Area: ${AREA}");

        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]));
      }

      function executeQueryTask(evt) {
        //用户点击onClick事件返回地图上EVT点.
        //包含在MapPoint(esri.geometry.point)和screenPoint(pixel像素点).
        //设置查询几何等于evt.mapPoint
        query.geometry = evt.mapPoint;

        //执行任务和完成showResults
        queryTask.execute(query, showResults);
      }

      function showResults(featureSet) {
        //删除地图上所有的图形层
        map.graphics.clear();

        //QueryTask返回featureSet类型.通过featureSet的循环把他们添加到信息窗口
        for (var i=0, il=featureSet.features.length; i<il; i++) {
          //从featureSet中得到当前实例.
          //从当前实例赋值给graphic
          var graphic = featureSet.features[0];
          graphic.setSymbol(symbol);

          //设置图形的infoTemplate.
          graphic.setInfoTemplate(infoTemplate);

          //添加当前这个图形到地图图层中
          map.graphics.add(graphic);
        }
      }

      dojo.addOnLoad(init);
    </script>
  </head>
  <body class="tundra">
    Click on a State to get more info.  When State is highlighted, click State again to get infoWindow.
    <div id="map" style="width:600px; height:600px; border:1px solid #000;"></div>
  </body>
</html>
   

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标WEB前端JavaScript频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 5 不喜欢 | 0
看完这篇文章有何感觉?已经有5人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程