01_设置定义表达式控制地图内容显示

本例展示如何使用图层定义来限制显示在地图上的图层信息。为了了解本例做了什么,看看用于这个地图的ESRI_Census_USA服务的服务目录页是有帮助的。检查地图中的图层列表。现在注意这行代码限制了显示图层为州和县。

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

这个数据覆盖了美国,那么为什么当运行示例时仅仅Kansas周被显示?这是因为图层定义,通过SQL表达式限制数据在地图上的显示。本例中,图层定义限制了州为Kansas并且Kansas中的区县人口超过25000。

下面的代码增加图层定义到数组,然后使用ArcGISDynamicMapServiceLayer.setLayerDefinitions()方法应用这些定义。注意在数组中,定义的索引和地图中图层的索引匹配:

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表达式的帮助资源,见ArcGIS Desktop帮助里的About building an SQL expression 。

注意不能在ArcGISTiledMapServiceLayers上设置图层定义。这些图层使用预先渲染的图片切片的缓存。虽然切片地图服务更快,但是被限制在切片上查看地图图片。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!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" />
    <title>动态创建图层列表</title>
    <link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/1.6/js/dojo/dijit/themes/tundra/tundra.css">
    <script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=1.6"></script>
    <script type="text/javascript">
        dojo.require("esri.map");

        var dynamicMapServiceLayer, map, visible = [];

        function init() {
            map = new esri.Map("map");

            dynamicMapServiceLayer = new esri.layers.ArcGISDynamicMapServiceLayer(
                "http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer"
            );

            if (dynamicMapServiceLayer.loaded) {
                buildLayerList(dynamicMapServiceLayer);
            } else {
                dojo.connect(dynamicMapServiceLayer, "onLoad", buildLayerList);
            }
        }

        function buildLayerList(layer) {
            var infos = layer.layerInfos, info;
            var items = [];
            for (var i = 0, j = infos.length; i < j; i++) {
                info = infos[i];
                if (info.defaultVisibility) {
                    visible.push(info.id);
                }
                items[i] = "<input type=‘checkbox‘ class= ‘list_item‘ checked=‘" + (info.defaultVisibility ? "checked" : "") + "‘ id=‘" + info.id + "‘ onclick=‘updateLayerVisibility();‘/><label for=‘" + info.id + "‘>" + info.name + "</label>";
            }
            dojo.byId("layer_list").innerHTML = items.join();

            layer.setVisibleLayers(visible);
            map.addLayer(layer);

        }

        function updateLayerVisibility() {
            var inputs = dojo.query(".list_item"), input;
            visible = [];
            for (var i = 0, j = inputs.length; i < j; i++) {
                if (inputs[i].checked) {
                    visible.push(inputs[i].id);
                }
            }
            dynamicMapServiceLayer.setVisibleLayers(visible);

        }
        dojo.addOnLoad(init);

    </script>

</head>

<body>
    This sample loads an ArcGISDynamicMapServiceLayer.<br />
    It determines the layers in the map service and presents them as checkboxes that can be used to toggle their visibility.<br />
    <br />
    Layer List: <span id="layer_list"></span><br />
    <br />
    <div id="map" class="tundra" style="width: 900px;height: 600px;border: 1px solid #000"></div>
</body>
</html>
时间: 2024-10-15 07:02:09

01_设置定义表达式控制地图内容显示的相关文章

设置不知道坐标系的地图居中显示

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Hello World</title> <link rel="stylesheet" href="http://jsapi.thinkgis.cn/esri/css/esri.css"> <scrip

ArcMap制图_显示指定区域地图内容

摘要:有一张完整的中国地图,有时仅要求针对某一特定区域制图,那么如何在不进行裁剪的情况下仅显示该区域范围的要素内容? 步骤: 1.打开ArcMap,加载完整的中国地图: 2.将要显示的区域范围制作成一个polygon图层命名为ClipLyr,并添加进来: 3.定义“数据框属性(Data Frame Properties)”: 范围(Extent)包括三个选项:Automatic:默认:Fixed Scale:只显示某个指定比例尺下地图,不可进行地图放大.缩小操作:Fixed Extend:只显示

phpmyadmin登录后显示“使用配置文件中定义的控制用户连接失败。”错误提示

在安装完XAMPP后,设置mysql中root账户密码为123456,并修改phpmyadmin配置中root的密码为123456之后,但是phpmyadmin登录后显示"使用配置文件中定义的控制用户连接失败."错误提示. 这是因为还有一些配置信息没有更改导致的,具体设置步骤如下: 1.找到phpmyadmin文件夹下面的config.inc.php文件并打开,找到这两行代码: $cfg['Servers'][$i]['controluser'] = 'pma'; $cfg['Serv

CSS控制长文本内容显示(截取的地方用省略号代替)

自动换行问题,正常字符的换行是比较合理的,而连续的数字和英文字符常常将容器撑大,下面介绍的是CSS如何实现处理的方法. 现实中经常出现一些内容比较长的文本,为了使整体布局美观,需要将文本内容控制在一行显示,并且截取一定的长度,截取的地方用省略号代替.虽然用动态语言可以对其控制,但是这样做是不利于搜索引擎收录的,活用CSS可以巧妙地解决这个问题,请看下面的代码:代码一:用于非表格LI或span等都可以 www.169it.com .text-overflow { display:block;/*内

bootstrap-table 使用遇到的问题总结:1.右上角button样式自定义;2.右上角引用图标自定义;3.表头/表格内容显示不对齐;4.自定义设置表头及表格边框样式

问题一:右上角button样式自定义 方法: //修改bootstrap-table右上角按钮样式 $(".table-box .columns-right button").removeClass("btn-secondary").css({"backgroundColor": "#fafafa","border": "1px solid #c2c2c2","color&qu

通过设置标签class值控制标签的显示与隐藏

需求背景如下: 原项目居民.单位.计量三模块共用一个jsp文件,显示的页面也顺理成章的统一了,幸亏没有调用同一个js,在此基础上要求居民和单位计量的分离,即居民的显示居民的相关信息,单位和计量的显示相同的信息,时间久远,仅有的未修改前的页面截图如下(红框内字段已替换成红字): 需求分析: (1)项目中添加字段并实现增删改查功能 (2)页面的展示,居民显示居民相关字段,单位和计量显示单位相关字段 字段添加这里不再赘述,主要分析页面的显示 刚开始拿到这个需求,打算另外新建单位相关的jsp页面(只包含

JS通过设置cookie来控制弹出层,首次打开页面显示弹出层

<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.jb51.net/" /> <title>JS通过设置cookie来控制弹出层,首次打开页面显示弹出层,刷新页面不再显示:关闭浏览器重新打开.清除缓存cookie显示.</title&

iOS地图的显示(大头针)

1 1.导入主头文件 2 #import <MapKit/MapKit.h> 3 MapKit框架使用须知 4 MapKit框架中所有数据类型的前缀都是MK 5 MapKit有一个比较重要的UI控件:MKMapView,专门用于地图显示 6 7 2.跟踪显示用户的位置 8 9 设置MKMapView的userTrackingMode属性可以跟踪显示用户的当前位置 10 MKUserTrackingModeNone :不跟踪用户的位置 11 MKUserTrackingModeFollow :跟

flex 地图居中显示

第一步调用类方法: MapUni.dataExtent([cityGra],map,0.003); layerxuanran.add(cityGra); 第二步导入类  (MapUni.as类) package com.mapUni.BaseClass { import com.esri.ags.Graphic; import com.esri.ags.Map; import com.esri.ags.SpatialReference; import com.esri.ags.geometry.