ArcGIS API For Javascript :双屏(多屏)地图联动的方法
在遇到地图对比的应用场景下,我们需要双屏地图或者多屏地图来满足我们的业务需求。
解决思路:首先生成两份(多份)地图,然后通过监听地图缩放拖拽,用地图四至将不同的地图对象做绑定,实现多地图联动。
前端部分
前端加入两个 id 不同的 <div> 标签,作为地图的容器。例如:
<div id="mapDiv" style="position:absolute;left:0;width:50%;height:100%;"></div>
<div id="mapdemo" style="position:absolute;left:50%;width:50%;height:100%;"></div>
这么做是将屏幕从中间一分为二,拆分为:
| 左侧地图 (mapDiv) |
右侧地图 (mapdemo) |
JS 部分
定义地图对象
两个地图对象分别匹配到前端的容器中,例如:
map = new esri.Map("mapDiv",{
lods: lods,
logo: false,
zoom:11,
minZoom:3,
maxZoom:20,
center: [87.6,43.8],
slider:false,
});
toggleMap = new esri.Map("mapdemo",{
lods: lods,
logo: false,
zoom:11,
minZoom:3,
maxZoom:20,
center: [87.6,43.8],
slider:false
});
需要注意,多个地图的基本属性保持一致性。
添加底图
左侧地图我们想要显示卫星影像,右侧地图显示平面地图,则可以为不同的地图对象添加不同的图层。例如:
var ImgMap = new GoogleMapLayer();
ImgMap.id = "ImgMap";
map.addLayer(ImgMap); var VectorMap = new GoogleMapVectorLayer();
VectorMap.id = "VectorMap";
toggleMap.addLayer(VectorMap);
这里我使用了拓展类调用谷歌地图的方法,简化代码,大家也可以根据自己的地图服务资源对图层进行替换。
监听地图
map.on("zoom-end",function(){
toggleMap.setExtent(map.extent);
});
map.on("mouse-up",function(){
toggleMap.setExtent(map.extent);
});
toggleMap.on("zoom-end",function(){
map.setExtent(toggleMap.extent);
});
toggleMap.on("mouse-up",function(){
map.setExtent(toggleMap.extent);
});
通过对两个地图“缩放结束”与“鼠标左键抬起”的监听,来获取地图范围产生变化结束的四至,然后将未产生变化的地图范围也设置未产生变化后的四至,从而实现两个地图在缩放与拖拽后能实现联动。
我没有对地图缩放与拖拽过程中做监听与联动,大家如有需要也可以在地图监听类型中使用诸如“mouse-drag-start”、“mouse-drag-end”等监听事件。
更多事件可以移步 - > 地图监听事件列表
最终我们就实现了左右两侧地图的同屏联动。
拓展联想
基于上述的联动的效果,我们不仅可以实现同屏多地图的展示与联动,还可以实现同屏不同专题地图的动态演示。
大家如有好的想法,请在下方评论留言。
ArcGIS API For Javascript :双屏(多屏)地图联动的方法的更多相关文章
- ArcGis API for JavaScript学习——加载地图
ArcGis API for JavaScript开发笔记——加载地图 在这个例子中使用的离线部署的API(请参见 http://note.youdao.com/noteshare?id=f42865 ...
- ArcGIS API For Javascript :如何制作地图切换器
大部分情况下我们开发会使用原生的地图切换器,由于每个项目的页面风格不同,业务场景不同,因此需要做一些样式不同的地图切换器. 首先可以照猫画虎,自己照着地图切换器的样式抄一个,或者看看主流的地图切换器都 ...
- ArcGIS API for JavaScript开发初探——基本地图组件使用
1.前言 在上一篇我们已经我们已经讲述了第一个地图应用程序的HelloMap的创建过程,这一篇我们来讲述基本地图组件:Home Button.比例尺.鹰眼图的使用方法. 2.基本地图组件 在ArcGI ...
- ArcGIS api for javascript——查找任务-在地图上查找要素
描述 本例展示了如何使用查找任务搜索数据.本例在地图上用图表显示结果并用DojoX的grid格式化结果为表格样式. FindTask构造函数需要一个ArcGIS Server地图服务的URL.本例使用 ...
- ArcGIS api for javascript——查找任务-没有地图查找要素
描述 本例展示了如何使用查找任务搜索数据里的记录,然后在HTML表格中显示结果. 尽管FindTask不需要显示一个地图,但是构造函数需要一个ArcGIS Server地图服务的URL. 本例使用ES ...
- ArcGIS API For Javascript :如何在地图上做出点位脉冲闪烁的效果
日常地图表达中我们通常使用的地图符号多是静态地图符号,时间久了会造成视觉审美疲劳,也没有现代感. 在这种背景下,对现有地图符号进行简单处理,即可得到色彩鲜艳,对比度强烈,活灵活现的地图表达形式. 灵感 ...
- Arcgis api for javascript学习笔记-控制地图缩放比例尺范围(3.2X版本与4.6版本)
Ⅰ. 在3.X版本中,设置Map对象的 "maxScale" 和 "minScale" 属性 <!DOCTYPE html> <html> ...
- 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 ...
- ArcGIS API for JavaScript 4.2学习笔记[1] 显示地图
ArcGIS API for JavaScript 4.2直接从官网的Sample中学习,API Reference也是从官网翻译理解过来,鉴于网上截稿前还没有人发布过4.2的学习笔记,我就试试吧. ...
- ArcGIS API for JavaScript根据两个点坐标在地图上画线
ArcGIS API for JavaScript根据两个点坐标在地图上画线比如说a(xxxx,xxxxx),b(xxxx,xxxxx).利用这两个点画一条线 var polyline = new e ...
随机推荐
- C# 控件 RichTextBox 显示行号,并且与Panel相互联动
我们在使用到WINFORM窗体工作中,要求RichTextBox 加入行号: 之前有看到大牛们写的,但是太复杂繁多,而且有用双TextBox进行联动,非常不错,今天我们尝试RichTextBox +P ...
- opencv::霍夫变换-直线
霍夫直线变换介绍 Hough Line Transform用来做直线检测 前提条件 – 边缘检测已经完成 平面空间到极坐标空间转换 对于任意一条直线上的所有点来说,变换到极坐标中,从[0~360]空间 ...
- pycharm(社区版2019.1版本)打开README.md文件卡死解决办法
现象:pycharm(社区版2019.1版本)打开README.md文件卡死 解决办法: 将插件Markdown support前的勾选√去掉,保存修改后重启pycharm即可
- html、css、javascript之间的关系
网页主要由三部分组成: 结构( Structure) . 表现( Presentation) 和行为( Behavior)HTML —— 结构, 决定网页的结构和内容( “是什么”)CSS —— 表现 ...
- 12.Nginx代理与负载均衡
1.什么是代理? 代为办理 --> 代理 2.Nginx正向代理.反向代理 正向代理: --> 上网 | 路由器替代 反向代理: --> 正向与反向代理的区别: 区别在于形式上服务的 ...
- 01--Java语言概述与开发环境 最适合入门的Java教程
Java 程序运行机制 编译型语言: 使用专门的编译器,针对特定平台(操作系统)将某种高级语言源代码一次性"翻 译"成可被该平台硬件执行的机器码(包括机器指令和操作数),并包装成该 ...
- SpringCloud学习--微服务架构
目录 微服务架构快速指南 SOA Dubbo Spring Cloud Dubbo与SpringCloud对比 微服务(Microservice)架构快速指南 什么是软件架构? 软件架构是一个包含各种 ...
- web开发资源导航
实用工具 前端在线工具 兼容性速查 html5兼容性查询 node-es6支持度 es6兼容性表查询 设备es6支持度 游览器H5支持度 浏览器内核检测工具 手机设备信息检测 浏览器市场份额 文档手册 ...
- Kafka消费者 从Kafka中读取数据并写入文件
Kafka消费者 从Kafka中读取数据 最近有需求要从kafak上消费读取实时数据,并将数据中的key输出到文件中,用于发布端的原始点进行比对,以此来确定是否传输过程中有遗漏数据. 不废话,直接上代 ...
- JAVA中锁的解决方案
前言 在上一节中,我们给大家介绍了什么是锁,以及锁的使用场景,我相信大家对锁的定义,以及锁的重要性都有了比较清晰的认识.在这一节中,我们会给大家继续做深入的介绍,介绍JAVA为我们提供的不同种类的锁. ...