ArcGIS For JavaScript API Dynamically create layer list(动态创建图层列表)
2015-06-06 10:37
846 查看
描述:
此示例遍历所有的地图服务中的图层,并添加到每一个复选框到列表中,可以切换和关闭的图层。参考示例Toggle layer visibility.
buildLayerList()函数:遍历每一层,并把它添加一个HTML复选框。这将生成图层列表。保存在列表中的每一层的默认可见性。
updateLayerVisibility()函数:更新显示层
引用联接:http://help.arcgis.com/en/webapi/javascript/arcgis/help/jssamples_start.htm
在线演示:http://help.arcgis.com/en/webapi/javascript/arcgis/samples/map_dynamiclayerlist/index.html
Dojo在线帮助API:http://dojotoolkit.org/api/
ArcGIS For JavaScript API :http://help.arcgis.com/en/webapi/javascript/arcgis/index.html
代码如下:
[html] view
plaincopyprint?
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<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>Dynamically Create Map Service Layer List</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");
var layer, map, visible = []; // 创建图层,地图和显示数组
/**
* 初始化函数
*/
function init() {
map = new esri.Map("map");
// 创建一个动态服务图层
layer = new esri.layers.ArcGISDynamicMapServiceLayer("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer");
if (layer.loaded) {
buildLayerList(layer);
}
else {
dojo.connect(layer, "onLoad", buildLayerList);
}
}
/**
* 构建图层函数
*/
function buildLayerList(layer) {
var items = dojo.map( // 适用于回调到给定数组中的每个元素,并返回一个数组的结果。
layer.layerInfos, // 在服务返回可见的图层的数组,默认是可见的
function(info,index){
if (info.defaultVisibility) {
visible.push(info.id); // 将id编号放入数组中
}
return "<input type='checkbox' class='list_item'" + (info.defaultVisibility ? "checked=checked" : "") + "' id='" + info.id + "' onclick='updateLayerVisibility();' /><label for='" + info.id + "'>" + info.name + "</label>";
}
);
dojo.byId("layer_list").innerHTML = items.join(' ');
alert(items);
layer.setVisibleLayers(visible,true); // setVisibleLayers(ids, doNotRefresh?) 默认为false(及时刷新)
map.addLayer(layer); // 将图层加入到地图中
}
/**
* 更新图层显示
*/
function updateLayerVisibility() {
var inputs = dojo.query(".list_item"), input; // 使用dojo.query()方法查询
visible = [];
// 遍历每一个文本框
dojo.forEach(inputs,function(input){
if (input.checked) {
visible.push(input.id); // 填充数组值
}
});
// 如果它们中有任何一个不显示的图层将 设置数组为 -1
if(visible.length === 0){
visible.push(-1);
}
layer.setVisibleLayers(visible);
}
dojo.addOnLoad(init); // 初始化加载
</script>
</head>
<body>
这个例子中加载一个 ArcGISDynamicMapServiceLayer.<br />
它决定了层在地图服务中,并将其显示为复选框,可以用来切换他们的显示。
<br />
图层列表 : <span id="layer_list"></span><br />
<br />
<div id="map" class="claro" style="width:600px; height:400px; border:1px solid #000;"></div>
</body>
</html>
显示结果如下:
此示例遍历所有的地图服务中的图层,并添加到每一个复选框到列表中,可以切换和关闭的图层。参考示例Toggle layer visibility.
buildLayerList()函数:遍历每一层,并把它添加一个HTML复选框。这将生成图层列表。保存在列表中的每一层的默认可见性。
updateLayerVisibility()函数:更新显示层
引用联接:http://help.arcgis.com/en/webapi/javascript/arcgis/help/jssamples_start.htm
在线演示:http://help.arcgis.com/en/webapi/javascript/arcgis/samples/map_dynamiclayerlist/index.html
Dojo在线帮助API:http://dojotoolkit.org/api/
ArcGIS For JavaScript API :http://help.arcgis.com/en/webapi/javascript/arcgis/index.html
代码如下:
[html] view
plaincopyprint?
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<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>Dynamically Create Map Service Layer List</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");
var layer, map, visible = []; // 创建图层,地图和显示数组
/**
* 初始化函数
*/
function init() {
map = new esri.Map("map");
// 创建一个动态服务图层
layer = new esri.layers.ArcGISDynamicMapServiceLayer("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer");
if (layer.loaded) {
buildLayerList(layer);
}
else {
dojo.connect(layer, "onLoad", buildLayerList);
}
}
/**
* 构建图层函数
*/
function buildLayerList(layer) {
var items = dojo.map( // 适用于回调到给定数组中的每个元素,并返回一个数组的结果。
layer.layerInfos, // 在服务返回可见的图层的数组,默认是可见的
function(info,index){
if (info.defaultVisibility) {
visible.push(info.id); // 将id编号放入数组中
}
return "<input type='checkbox' class='list_item'" + (info.defaultVisibility ? "checked=checked" : "") + "' id='" + info.id + "' onclick='updateLayerVisibility();' /><label for='" + info.id + "'>" + info.name + "</label>";
}
);
dojo.byId("layer_list").innerHTML = items.join(' ');
alert(items);
layer.setVisibleLayers(visible,true); // setVisibleLayers(ids, doNotRefresh?) 默认为false(及时刷新)
map.addLayer(layer); // 将图层加入到地图中
}
/**
* 更新图层显示
*/
function updateLayerVisibility() {
var inputs = dojo.query(".list_item"), input; // 使用dojo.query()方法查询
visible = [];
// 遍历每一个文本框
dojo.forEach(inputs,function(input){
if (input.checked) {
visible.push(input.id); // 填充数组值
}
});
// 如果它们中有任何一个不显示的图层将 设置数组为 -1
if(visible.length === 0){
visible.push(-1);
}
layer.setVisibleLayers(visible);
}
dojo.addOnLoad(init); // 初始化加载
</script>
</head>
<body>
这个例子中加载一个 ArcGISDynamicMapServiceLayer.<br />
它决定了层在地图服务中,并将其显示为复选框,可以用来切换他们的显示。
<br />
图层列表 : <span id="layer_list"></span><br />
<br />
<div id="map" class="claro" style="width:600px; height:400px; border:1px solid #000;"></div>
</body>
</html>
显示结果如下:
相关文章推荐
- 基于Html+js实现的瓦片式的Webgis栅格地图管理平台
- 翻译 Cesium入门教程(一)------环境配置 Hello World
- 翻译 Cesium入门教程(二)------图层 Imagery Layers
- 中科燕园GIS外包团队承接GIS项目外包(arcgis项目外包、supermap项目外包)
- 中科燕园GIS外包团队(手机:13261043797 QQ:1216807928 )预祝各位同行元旦快乐
- 中科燕园GIS外包团队咨询ArcGIS 10.3 惊艳登场,打造新一代Web GIS最强“芯”
- 中科燕园GIS外包--移动GIS
- 中科燕园GIS外包---管道GIS
- 中科燕园GIS外包---交通运输综合地理信息平台
- 中科燕园arcgis外包案例---现代城三维物业可视化系统
- 中科燕园arcgis外包案例之12---供水供热管线GIS系统
- 中科燕园GIS外包案例之10----水资源webgis系统
- 中科燕园GIS外包案例之七---基于ArcGIS Server的输电线路三维全景系统
- 中科燕园GIS外包案例之六--三维GIS虚拟看房功能介绍
- 中科燕园GIS外包案例之五--地下管线管理信息系统
- 中科燕园案例之四--电网移动GIS平台
- 中科燕园gis外包案例之二---影像超市
- 社区网格化GIS管理系统
- ArcGIS Server10.1创建新站点失败,常见问题解决方法(WIN8.1 64位)
- Arcgis ArcMap 10 如何生成msd地图文档定义【 arcgis mxd怎么转换成msd】