在一个WebGIS系统中往往要实现图形的切换,比如业务图层的切换,以及底图的切换等等,可以通过控制图层的可见性来实现。比如通过设置图层的opacity 、visible来控制,前几天有网友聊天的时候提了一个这样的需求如果在地图切换的时候添加一个过渡效果,以至于变化的效果不显得生硬。写面说一下我的实现思路。
    先看一下效果吧   Demo链接

  如果这个功能在普通的Web开发中,果要对两个html元素 比如div实现渐变性的切换的效果,我们首先会想到使用Jquery或者dojo等框架来解决,这些框架中都有一些动画的方式来实现,可以尝试将这种思想用在地图上。
首先应该知道,地图中的图片都是通过html元素来承载的。每个图层都被一个div包裹着,通过开发者工具查看 Map的组成如下。
  通过上图可以看到每个图层都被一个div包裹着,如果设置最外层div的透明度,里面包括的地图也会改变为相应的透明度。到此为止解决方案基本上思路是清晰了:找出每个图层的div,然后在动画里面动态地改变相应div的透明度。接下来进行编码实现。
    <!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" >
<style>
html, body, #map {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
overflow-y:hidden;
background-color: #DBD7D0;;
font-family: "Trebuchet MS";
}
</style>
<title>
</title>
</head>
<body>
<div id="map">
<button id="switchbasemap" style="position: absolute;z-index: 1;left: 100px;top: 20px;height: 30px;">切换底图</button>
</div>
</body>
<script src="http://js.arcgis.com/3.7/"></script>
<script src="app.js"></script>
</html>
  上述代码中主要引入ArcGIS的Javascript API以及相应的CSS,并且添加了一个按钮来触发 地图的切换事件。
在 JS代码里主要解决了2个问题,1、如何获取承载图层的div元素 2、如果实现动画的实现。通过刚才的发现,上面包裹图层的div都有一个固定的id,有了这个id,可以通过 document.getElementById 或者dojo自带的dojo.byId就可以轻而易举地获得了 ,如果使用的是最新的是3.7的api的话,调用新增的getNode方法就可以得到这个div了。至于实现动画效果可以使用dojo中的 dojo/_base/fx 中的animateProperty 来实现,(Jquery中可以使用对应的$.animate)。

关键代码如下(具体代码请下载完整的代码 地址:http://codepen.io/kunkun/share/zip/xsiub )

     basefx.animateProperty({
node: colorfullbasemapdiv,
duration:1000,
properties: { opacity: 0 },
onEnd:function(){
colorfullbasemapdiv.style.display="none";
graybasemapdiv.style.display="block";
basefx.animateProperty({
duration:1000,
node: graybasemapdiv,
properties: { opacity: 1 }
}).play();
}
}).play();

    总结:通过控制包裹图层的div来实现效果的渐变,通过这种方式还可以给地图添加一个滤镜的功能,通过获取map的div 设置相应的CSS 熟悉即可。根据这种思想的指导,在以后开发中,如果碰到API不支持的工功能,可以试试这种这种控制原生的html来解决。

ArcGIS API for Javascript 图层切换渐变效果实现的更多相关文章

  1. ArcGIS api for javascript——图层-创建定制的切片图层类型的图层

    描述 本例展示了如何创建一个定制图层,该图层访问来自WEB服务器的地图切片.这种方式最通用的用途是检索ArcGIS Server 9.2切片缓存或web上的其他地图切片服务.尽管本例使用的是一个Arc ...

  2. ArcGIS api for javascript——图层-创建WMS图层类型的图层

    本例使用一个WMS端点创建了一个简单的动态图层.首先,代码声明一个新的类my.CityStatesRiversUSAWMSLayer,该类继承esri.layers.DynamicMapService ...

  3. ArcGIS API for JavaScript(2)-ArcGIS Server发布要素图层服务

    1.前言 上一篇该系列的文章我们主要讲了一下基础Web地图搭建,这篇我们主要讲一下ArcGIS Server发布服务,并且如何调用服务.将自己的数据加载到Web地图当中来,实现Web端浏览数据. 2. ...

  4. 转:ArcGIS API For JavaScript官方文档(二十)之图形和要素图层——①Graphics概述

    原文地址:ArcGIS API For JavaScript官方文档(二十)之图形和要素图层——①Graphics概述 ArcGIS JavaScript API允许在地图上绘制graphic(图形) ...

  5. arcgis api for JavaScript _加载三维图层(scene layer)

    arcgis api for JavaScript _加载三维图层(scene layer) arcgis api for JavaScript  4.x 版本增加对三维的支持. 关于三维图层(sce ...

  6. [ArcGIS API for JavaScript 4.8] Sample Code-Get Started-widgets简介

    [官方文档:https://developers.arcgis.com/javascript/latest/sample-code/intro-widgets/index.html] 一.Intro ...

  7. 基于ArcGIS API for Javascript的地图编辑工具

    最近工作上需要用ArcGIS API for Javascript来开发一个浏览器上使用的地图编辑工具,分享一下一些相关的开发经验. 我开发的地图编辑工具是根据ESRI提供的例子修改而来的,参考的例子 ...

  8. ArcGIS API for JavaScript介绍

    ArcGIS API for JavaScript中的类是按照模块组织的,主要包含esri.esri/geometry.esri/renderers.esri/symbols.esri/symbols ...

  9. ArcGIS.Server.9.3和ArcGIS API for JavaScript地图实现Toorbar功能(四)

    转自:http://www.cnblogs.com/hll2008/archive/2008/11/22/1338630.html 目的:1.ArcGIS API for JavaScript实现To ...

随机推荐

  1. Druid.io系列(五):查询过程

    原文链接: https://blog.csdn.net/njpjsoftdev/article/details/52956194 Druid使用JSON over HTTP 作为底层的查询语言,不过强 ...

  2. python学习笔记(十一):网络编程

    一.python操作网络,也就是打开一个网站,或者请求一个http接口,使用urllib模块. urllib模块是一个标准模块,直接import urllib即可,在python3里面只有urllib ...

  3. 【转】浅析VO、DTO、DO、PO的概念、区别和用处

    原文地址:http://blog.csdn.net/zjrbiancheng/article/details/6253232 概念: VO(View Object):视图对象,用于展示层,它的作用是把 ...

  4. update project maven项目的时候出错

    preference node "org.eclipse.wst.validation"has been remove 上面的错误是因为修改包名无法互相引入导致的,仅仅需要将Ecl ...

  5. Python 小知识点(9)--反射

    通过字符串映射或修改程序运行时的状态.属性.方法.有如下四个方法 1.hasattr(obj,name_str) , 判断一个对象obj里是否有对应的name_str字符串的方法 2.getattr( ...

  6. rabbitMQ消息队列1

    rabbitmq 消息队列 解耦 异步 优点:解决排队问题 缺点: 不能保证任务被及时的执行 应用场景:去哪儿, 同步 优点:保证任务被及时的执行 缺点:排队问题 大并发 Web nginx 1000 ...

  7. Dreamweaver 中文乱码

     定义当前页面的编码属性      Ctrl+j 标题/编码 将编码改成UTF8即可     PhpStorm    FILE->Setting->File Encoding->将U ...

  8. Django 学习之---缓存系统

    一.浏览器缓存机制 Cache-control策略(重点关注) Cache-Control与Expires的作用一致,都是指明当前资源的有效期,控制浏览器是否直接从浏览器缓存取数据还是重新发请求到服务 ...

  9. PHP 性能优化之 PHP-FPM

    简介: PHP-FPM 是一个 PHP FastCGI 管理器,一般 Nginx 上面跑 PHP 程序都会将 PHP 程序丢给 PHP-FPM 来解析.好了,就这样! PHP 5.4 开始集成了 PH ...

  10. <转>linux操作系统编程——共享内存读写(采用信号量进行同步互斥)

    http://blog.csdn.net/yanghaoran321/article/details/7872722 程序要求: 创建一个写端和一个读端,写端写入数据后读端才开始读,读端读完数据后,写 ...