Arcgis API for JS——普通分屏联动及二三维联动
对于二三维联动,有多种方法进行实现,当时旧项目使用了当时能掌握的一种写法,在技能提升了这么多后当然要对这些写法做一个总结。
一、通过监听View上的鼠标事件变化来进行分屏联动(同一坐标系)
(同理可以用此方法进行二三维联动)
前期工作,简单创建了四个View:
(已经不再是当时那种小白,建4个View写4遍var view = new MapView(),想想真丢人)
var views = []
//根据需要来创建多个视图并绑定地图容器div的id
for (var i = 0; i < 4; i++) {
var view = new MapView({
map: map,
container: 'map_' + i
})
views.push(view);
}
接下来就是多屏联动的功能了:
on('load', function () {
views && views.forEach(function (view) {
//定义一个范围变量
var fullextent = null;
//设置鼠标滚轮事件
view.on("mouse-wheel", function (e) {
//延迟获取范围的函数
window.setTimeout(function () {
//获取操作图层的范围
fullextent = view.extent
//遍历所有视图来设置这个范围
views.forEach(function (nview) {
nview.extent = fullextent
})
}, 1000)
})
//设置鼠标拖拽事件
view.on("drag", function (e) {
//获取操作图层的范围
fullextent = view.extent
//遍历所有视图来设置这个范围
views.forEach(function (nview) {
nview.extent = fullextent
})
})
})
})
感觉代码简洁了好多,下面就是效果图了(虽然丑爆了,毕竟是简单记录一下嘛)。
二、通过控制放置View的DIV进行二三维联动(不同坐标系)
(同理可以用此方法进行分屏联动)
使用Jquery Easy UI插件,使用了tab选项卡,不同的选项卡放置了MapView和SceneView
<div id="tt" class="easyui-tabs">
<div id="mapDiv" title=" 二维地图" class="tab-page"></div>
<div id="sceneDiv" title="三维地图" class="tab-page"></div>
</div>
通过点击不同的选项卡进行联动
//绑定事件
$('#tt').tabs({
onSelect: function (title, index) {
if (index == 0) {
var params2Dto3D = new ProjectParameters({
geometries: [sceneView.extent],
outSpatialReference: s2364
});
geometryService1.project(params2Dto3D).then(function (result) {
mapView.extent = result[0]
})
}
else {
var params3Dto2D = new ProjectParameters({
geometries: [mapView.extent],
outSpatialReference: s4326
});
geometryService1.project(params3Dto2D).then(function (result) {
sceneView.extent = result[0];
sceneViewlocal.extent = result[0];
});
//sceneViewlocal.clippingArea=xzqhLayer.fullExtent.expand(0.5); //即地图裁剪至xzqhLayer范围的一半。
//sceneViewlocal.extent = mapView.extent; //这种方式取决于地图坐标系相同
}
}
});
Arcgis API for JS——普通分屏联动及二三维联动的更多相关文章
- arcgis api for js入门开发系列二十打印地图的那些事
前面我写过关于利用arcgis api for js打印地图的,但是打印地图服务都是基于arcgis server发布的,arcgis api加载在线地图,比如天地图.百度地图.高德地图等,底图都是打 ...
- arcgis api for js入门开发系列四地图查询(含源代码)
备注:由于实现本篇功能的需求,修改了地图数据的dlsearch.mxd,然后更新了地图服务,需要的在文章最后有提供最新的mxd以及源代码下载的 上一篇实现了demo的地图工具栏,本篇新增地图查询功能, ...
- arcgis api for js入门开发系列一arcgis api离线部署
在我的GIS之家QQ群里,很多都是arcgis api for js开发的新手,他们一般都是GIS专业的学生,或者从计算机专业刚刚转向来的giser,他们难免会遇到各种webgis开发的简单问题,由于 ...
- arcgis api for js入门开发系列十一地图统计图
上一篇实现了demo的叠加SHP图层,本篇新增地图统计图,截图如下: 地图统计图实现的思路如下:利用拓展arcgis api的js文件(MapChartGraphic.js以及MapChartGrap ...
- 转:arcgis api for js入门开发系列四地图查询
原文地址:arcgis api for js入门开发系列四地图查询 arcgis for js的地图查询方式,一般来说,总共有三种查询方式:FindTask.IdentifyTask.QueryTas ...
- Arcgis API for JS——打印控件乱码
在通过Arcgis API for JS编写打印控件进行地图下载时,总发现地图字体乱码,如下图: 解决方法: 在装有ArcGIS Server,要调用服务的电脑或服务器上找到下图文件夹
- ArcGIS API for js Legend(图例)
1.说明 有关怎么把ArcGIS API for js部署到IIS上,请参考我上面的写的博客https://www.cnblogs.com/net064/p/10302660.html 2.运行效果 ...
- arcgis api for js 地图查询
arcgis api for js入门开发系列四地图查询(含源代码) 上一篇实现了demo的地图工具栏,本篇新增地图查询功能,包括属性查询和空间查询两大块,截图如下: 属性查询效果图: 空间查询效 ...
- arcgis api for js 4.X 出现跨域问题
arcgis api for js 4.X 出现跨域问题 XMLHttpRequest cannot load http://localhost/4.3/4.3/esri/workers/mutabl ...
随机推荐
- learning makefile call func
- linux服务器开机启动tomcat
程序自启动脚本实质上就是一个shell脚本.以简单的Tomcat自启动脚本为例,Tomcat使用安装目录下的startup.sh启动.shutdown.sh停止,我们可以把它们写到一个启动脚本里. 1 ...
- Phoenix安装
第一步: 安装erlang虚拟机: 第二步: 安装Elixir Add Erlang Solutions repo: wget https://packages.erlang-solutions.co ...
- HFun.快速开发平台(三)=》通用系统用户选择
系统中用户的选择使用特别多,将该功能统一实现可提升系统效率. 用户的选择实现相对简单,系统中基本都会提供,HFun.快速开发平台中的实现特点主要有: 1.用户的选择分为单用户选择和多用户选择. 2.用 ...
- Bom简单介绍
1.什么是bom? 全称:浏览器对象模型(Browser Object Model) bom是js的一部分, 2.bom的对象,方法和方法 bom提供了主要的8大对象:Window,Screen,Lo ...
- BUAAOO第一单元的总结
---恢复内容开始--- Homework1 简单多项式求导 程序架构 由于对java的生疏和不了解,第一次作业很羞愧的只用了一个类. 1.在输入之后调用Polyformat函数检查输入的格式,A检索 ...
- JDBC原理
JDBC原理 JDBC是什么: Java Database Connectivity:Java访问数据库的解决方案 JDBC是Java应用程序访问数据库的里程碑式解决方案.Java研发者希望用相同 ...
- (转)ArcGIS Runtime for Android 使用异步GP服务绘制等值线
关于基于Android上ArcGIS Server GP服务的调用,已经有前辈给出了很好的例子: http://blog.csdn.net/esrichinacd/article/details/92 ...
- Beta阶段冲刺二
Beta冲刺二 1.团队TSP 团队任务 预估时间 实际时间 完成日期 对数据库的最终完善 120 150 12.2 对学生注册功能的完善--新增触发器 150 140 11.29 对教师注册功能的完 ...
- c# 多线程的几种方式
1.什么是线程? 进程作为操作系统执行程序的基本单位,拥有应用程序的资源,进程包含线程,进程的资源被线程共享,线程不拥有资源. 2.前台线程和后台线程的区别? 程序关闭时,后台线程直接关闭,但前台线程 ...