对于二三维联动,有多种方法进行实现,当时旧项目使用了当时能掌握的一种写法,在技能提升了这么多后当然要对这些写法做一个总结。

一、通过监听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——普通分屏联动及二三维联动的更多相关文章

  1. arcgis api for js入门开发系列二十打印地图的那些事

    前面我写过关于利用arcgis api for js打印地图的,但是打印地图服务都是基于arcgis server发布的,arcgis api加载在线地图,比如天地图.百度地图.高德地图等,底图都是打 ...

  2. arcgis api for js入门开发系列四地图查询(含源代码)

    备注:由于实现本篇功能的需求,修改了地图数据的dlsearch.mxd,然后更新了地图服务,需要的在文章最后有提供最新的mxd以及源代码下载的 上一篇实现了demo的地图工具栏,本篇新增地图查询功能, ...

  3. arcgis api for js入门开发系列一arcgis api离线部署

    在我的GIS之家QQ群里,很多都是arcgis api for js开发的新手,他们一般都是GIS专业的学生,或者从计算机专业刚刚转向来的giser,他们难免会遇到各种webgis开发的简单问题,由于 ...

  4. arcgis api for js入门开发系列十一地图统计图

    上一篇实现了demo的叠加SHP图层,本篇新增地图统计图,截图如下: 地图统计图实现的思路如下:利用拓展arcgis api的js文件(MapChartGraphic.js以及MapChartGrap ...

  5. 转:arcgis api for js入门开发系列四地图查询

    原文地址:arcgis api for js入门开发系列四地图查询 arcgis for js的地图查询方式,一般来说,总共有三种查询方式:FindTask.IdentifyTask.QueryTas ...

  6. Arcgis API for JS——打印控件乱码

    在通过Arcgis API for JS编写打印控件进行地图下载时,总发现地图字体乱码,如下图: 解决方法: 在装有ArcGIS Server,要调用服务的电脑或服务器上找到下图文件夹

  7. ArcGIS API for js Legend(图例)

    1.说明 有关怎么把ArcGIS API for js部署到IIS上,请参考我上面的写的博客https://www.cnblogs.com/net064/p/10302660.html 2.运行效果 ...

  8. arcgis api for js 地图查询

      arcgis api for js入门开发系列四地图查询(含源代码) 上一篇实现了demo的地图工具栏,本篇新增地图查询功能,包括属性查询和空间查询两大块,截图如下: 属性查询效果图: 空间查询效 ...

  9. arcgis api for js 4.X 出现跨域问题

    arcgis api for js 4.X 出现跨域问题 XMLHttpRequest cannot load http://localhost/4.3/4.3/esri/workers/mutabl ...

随机推荐

  1. jenkins log文件突然占满磁盘空间

    今天早上同事反应jenkins构建job发生异常,于是登录机器查看发现磁盘空间已满.进一步排查之后发现jenkins的catalina.out文件已占满磁盘空间. 用tail看了下日志后面都是关于DN ...

  2. 运用python发邮件

    1.网上有许多发送邮件的代码,运行了几次都不成功(使用python3),转用Python2之后,发送成功 2.代码样例: 参考教程:http://www.runoob.com/python/pytho ...

  3. 1.moocs

    “三巨头”:Coursera.edX和Udacity Coursera:http://www.coursera.org 目前发展最大的MOOCs平台,拥有相近500门来自世界各地大学的课程,门类丰富, ...

  4. 华为S5700设置vlan,并绑定电脑的IP地址与mac地址。

    要求是设置两个vlan,10和20.交换机下的10网段和20网段的电脑在两个vlan当中.20网段的ip地址与mac地址绑定,从而实现下面的电脑更改ip地址或者不明来源的电脑不能连接到交换机. 1.s ...

  5. 嵌入式单片机,ATmega328P,外部中断INT0,INT1,INT2,中断标志位介绍

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  6. 虚拟机网络NAT模式配置静态IP

    虚拟机网络连接方式 安装好虚拟机以后,在网络连接里面可以看到多了两块网卡: 其中VMnet1是虚拟机Host-only模式的网络接口,VMnet8是NAT模式的网络接口. 虚拟机常见有三种网络连接方式 ...

  7. python基础之作业2----购物车小练习

    product_list = [    ("Iphone",6000),    ("Mac pro",12800),    ("Bike", ...

  8. react系列笔记:第三记-redux-saga

    github : https://github.com/redux-saga/redux-saga 文档:https://redux-saga.js.org/ redux-saga:  redux中间 ...

  9. DevExpress v18.2新版亮点——Reporting篇(一)

    行业领先的.NET界面控件——DevExpress v18.2日前正式发布,本站将以连载的形式为大家介绍新版本新功能.本文将介绍了DevExpress Reporting v18.2 的新功能,新版3 ...

  10. Ubuntu下Caffe实现物体分类

    参考链接: ubuntu下配置Caffe:https://blog.csdn.net/a_z666666/article/details/72853346 https://www.cnblogs.co ...