描述

本例展示了如何使用按钮在地图里的两个不同的图层间切换。所有地图里的图层恰巧是来自ArcGIS Online的ArcGISTiledMapServiceLayers。按钮是Dojo dijit按钮,不过也可以使用HTML按钮,radio按钮等调用相同的函数。

当应用运行时,发生下面的事情:

1.init函数被调用,创建一个地图并且通过map.addLayer方法直接加入影像图层。函数也填充了图层名字的数组,但是没有创建除影像图层之外的任何图层。

2.用户单击按钮,调用changeMap函数。一个包含与按钮一致的图层ID的单个项目数组作为输入参数被传递给changeMap函数。

3.changeMap直接调用hideImageTiledLayers函数,传给hideImageTiledLayers函数同样的包含和被点击的按钮一致的图层ID的单个项目的数组。hideImageTiledLayers函数循环访问地图里的每个图层,和传入函数的图层ID不匹配的图层ID的图层被隐藏。

4.函数 当hideImageTiledLayers函数完成,changeMap函数循环访问图层数组里的每个图层,并调用函数initLayer。 记住数组仅仅包含一个图层,和被单击的按一致的图层

5.initLayer函数创建图层,然后增加图层到地图里。

6.changeMap函数显示图层(使图层可见)。

 <%@ 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>显示多个ArcGIS Online服务</title>
<script type="text/javascript">djConfig = { isDebug:true };</script>
<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");
dojo.require("dijit.form.Button"); var map;
var streetMap, imageryPrime, shadedRelief, ngsTopoUS, boundariesWorld; function init(){
map = new esri.Map("map");
imageryPrime = new esri.layers.ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_Imagery_World_2D/MapServer", {id:"imageryPrime"});
map.addLayer(imageryPrime); streetMap = initLayer("http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer", "streetMap");
shadedRelief = initLayer("http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_ShadedRelief_World_2D/MapServer", "shadedRelief");
ngsTopoUS = initLayer("http://server.arcgisonline.com/ArcGIS/rest/services/NGS_Topo_US_2D/MapServer", "ngsTopoUS");
boundariesWorld = initLayer("http://server.arcgisonline.com/ArcGIS/rest/services/Reference/ESRI_BoundariesPlaces_World_2D/MapServer", "boundariesWorld"); }
function initLayer(url, id) {
var layer = new esri.layers.ArcGISTiledMapServiceLayer(url, {id:id, visible:false});
map.addLayer(layer);
return layer;
} function changeMap(layers) {
hideImageTiledLayers(layers);
for (var i=0;i<layers.length;i++) {
layers[i].show();
} } function hideImageTiledLayers(layers) { alert(map.layerIds.length);
for(var i=0,j=map.layerIds.length;i<j;i++) { var layer = map.getLayer(map.layerIds[i]);
if(dojo.indexOf(layers,layer) == -1) {//没有找到
layer.hide();
} } } dojo.addOnLoad(init);
</script> </head> <body class="tundra">
<div id="map" style="width: 1100px;height: 600px;border: 1px solid #000"></div>
<div style="position: absolute;right: 175px;top: 10px;z-index: 999;">
<button dojoType="dijit.form.Button" onclick="changeMap([imageryPrime]);"> imageryPrime</button>
<button dojoType="dijit.form.Button" onclick="changeMap([imageryPrime,boundariesWorld]);">imageryPrime,boundariesWorld </button>
<button dojoType="dijit.form.Button" onclick="changeMap([streetMap]);"> streetMap</button>
<button dojoType="dijit.form.Button" onclick="changeMap([ngsTopoUS]);">ngsTopoUS </button>
<button dojoType="dijit.form.Button" onclick="changeMap([shadedRelief]);">shadedRelief </button>
</div> </body>
</html>

最新文章

  1. IDA的脚本IDC的一个简单使用
  2. python3 入门 (一) 基础语法
  3. Cookie与Session的一些总结
  4. jsp中调用getOutputStream()产生冲突
  5. C++标准程序库读书笔记-第二章新的语言特性
  6. 让Qt for Windows Phone 8.1在真机上执行
  7. HTTP2协议之HPACK--之头部压缩规范介绍
  8. 【ES】ElasticSearch初体验之使用Java进行最基本的增删改查~
  9. 【Linux】ssh免密登录
  10. spring boot / cloud (十九) 并发消费消息,如何保证入库的数据是最新的?
  11. HIVE使用mysql作为外置数据库配置详情
  12. Python 迭代器之列表解析
  13. 使用Semaphore控制对资源的多个副本的并发访问
  14. chrome插件学习笔记
  15. HTTP 协议服务器相关概念
  16. Android自定义View+贝赛尔曲线
  17. Python 3 进阶 —— 使用 PyMySQL 操作 MySQL
  18. Android学习之基础知识十二 — 第二讲:网络编程的最佳实践
  19. 菜鸟调错(三)——Jboss与jdk版本不兼容导致WebService调用出错
  20. tabs 标签样式

热门文章

  1. DotNetCore.1.0.1-VS2015Tools.Preview2.0.3 相关问题及解决办法
  2. CF 286(div 2) B Mr. Kitayuta&#39;s Colorful Graph【传递闭包】
  3. Python 批量处理特定格式文件
  4. KMP笔记
  5. luogu P4018 Roy&amp;October之取石子(博弈论)
  6. 《剑指Offer》——试题1:赋值运算符函数
  7. [LeetCode] 455. 分发饼干 assign-cookies(贪心算法)
  8. 洛谷 P1220 关路灯 (贪心+区间dp)
  9. 【BZOJ 1483】[HNOI2009]梦幻布丁
  10. Java基础学习总结(5)——多态