ArcGIS For JavaScript API Show map using layer definitions(使用层定义显示地图)————(十三)

查看原文:http://www.ibloger.net/article/373.html

描述:

此示例演示如何使用层定义限制的信息在地图上显示出来的层。

dynamicMapServiceLayer.setVisibleLayers([5,4,3]);

该数据涵盖了美国,当您运行例子时为什么只有堪萨斯州出现?这是因为,这是SQL表达式限制在地图上显示的数据层定义。在此示例中,该层定义限制美国堪萨斯州,在堪萨斯州的人口超过25000的县。

下面的代码添加到一个数组中的层定义,适用于的定义使用的的ArcGISDynamicMapServiceLayer.setLayerDefinitions()方法。重点也是这里

definition matches its corresponding layer index in the map:var layerDefs=[];
layerDefs
[5]="STATE_NAME='Kansas'";
layerDefs
[4]="STATE_NAME='Kansas' and POP2007>25000";
layerDefs
[3]="STATE_NAME='Kansas' and POP2007>25000";

dynamicMapServiceLayer
.setLayerDefinitions(layerDefs);

如果你是刚开始学习构建SQL表达式,一个有用的资源是关于建立一个SQL表达式在ArcGIS Desktop帮助联接。About building an SQL expression

 

常量描述
LAYER_OPTION_EXCLUDE默认情况下,除了指定的层ID,显示所有可见图层.
LAYER_OPTION_HIDE除了指定的层ID,显示所有图层.
LAYER_OPTION_INCLUDE默认情况下,除了可见层,显示指定图层ID.
LAYER_OPTION_SHOW只显示指定图层的ID.

引用联接:http://help.arcgis.com/en/webapi/javascript/arcgis/jssamples/#sample/map_multiplelayerdef

在线演示:http://help.arcgis.com/en/webapi/javascript/arcgis/samples/map_multiplelayerdef/index.html

 

代码分析:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://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,IE=9" />
    <!--The viewport meta tag is used to improve the presentation and behavior of the samples on iOS devices-->
    <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"/>
    <title>Create Map with Custom ArcGISDynamicMapServiceLayer Layer Definitions</title>
    <link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.2/js/dojo/dijit/themes/claro/claro.css">
    <link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.2/js/esri/css/esri.css" />
    <script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=3.2"></script>
    <script type="text/javascript">
      dojo.require("esri.map");		// 导入包

      function init() {
		  // 空间范围
        var startExtent = new esri.geometry.Extent(-103, 36.8, -94, 40.2, new esri.SpatialReference({wkid:4326}) );

        var map = new esri.Map("map", {extent:esri.geometry.geographicToWebMercator(startExtent)});
        var tiledMapServiceLayer = new esri.layers.ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer");
        map.addLayer(tiledMapServiceLayer);

        //使用ImageParameters设置地图服务层定义和地图服务的可见层,然后再添加到客户端地图。
        var imageParameters = new esri.layers.ImageParameters();	// 无带参函数

        //layer.setLayerDefinitions采用一个数组。该数组的index索引,对应于该层的id。
		//这些数组元素对应的层的ID在远程ArcGISDynamicMapServiceLayer
        var layerDefs = [];
        layerDefs[5] = "STATE_NAME='Kansas'";	// 使用的sql语句来控制显示,此处为数组赋值,方法解释点击上面链接
        layerDefs[4] = "STATE_NAME='Kansas' and POP2007>25000";
        layerDefs[3] = "STATE_NAME='Kansas' and POP2007>25000";
        imageParameters.layerDefinitions = layerDefs;	// 层数组的表达式

        // 让层 5,4, 和 3 显示
        imageParameters.layerIds = [5,4,3];
        imageParameters.layerOption = esri.layers.ImageParameters.LAYER_OPTION_SHOW;	// 该选项用于显示或隐藏的层。有效值见常表。
        imageParameters.transparent = true;

        //construct ArcGISDynamicMapServiceLayer with imageParameters from above
        var dynamicMapServiceLayer = new esri.layers.ArcGISDynamicMapServiceLayer("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer",
			 {"imageParameters":imageParameters});

        map.addLayer(dynamicMapServiceLayer);
      }

      dojo.addOnLoad(init);
    </script>
  </head>
  <body class="claro">
    <div id="map" style="width:900px; height:600px; border:1px solid #000;"></div>
  </body>
</html>


 

效果如下:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值