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

一、通过监听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. WebService调用SSAS教程

    WebService调用SSAS教程 一.创建SSAS项目 使用SQL Server Business Intelligence Development Studio新建Analysis Servic ...

  2. Tsinghua 2018 DSA PA2简要题解

    反正没时间写,先把简要题解(嘴巴A题)都给他写了记录一下. upd:任务倒是完成了,我也自闭了. CST2018 2-1 Meteorites: 乘法版的石子合并,堆 + 高精度. 写起来有点烦貌似. ...

  3. http协议与https协议的前世今生

    一.Http与Https的区别: HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头 HTTP 是不安全的,而 HTTPS 是安全的 HTTP 标准端口是80 ...

  4. Django_简单的数据库交互案例

    https://www.jianshu.com/p/bd0af02e59ba 一.页面展示 做一个简单的数据库交换的练习案例   页面.png 二.创建mysql 表 (1)创建django (2)创 ...

  5. dubbo-admin 配置运行

    1.下载dubbo源码:http://dubbo.io/ 2.idea 导入maven项目 3.配置tomcat:http://localhost:8080/ 4.下载zookeeper:http:/ ...

  6. 深入java----java内存区域及对象的创建

    看完深入理解jvm之后自己再用图的方式进行一遍梳理,用以加深理解. 第一部分,首先对整体java运行时内存区域有一个整体框架式的了解. 运行时内存区域的划分如上图所示,那么接下里看看一个对象的创建又怎 ...

  7. AutoCAD 2019.0.1 Update 官方简体中文版

    欧特克三维机械设计软件AutoCAD 2019版本于2018年3月23号全球正式发布,新版本图标全新设计,视觉效果更清晰:在功能方面,全新的共享视图功能.DWG文件比较功能:现在打开及保存图形文件已经 ...

  8. transfer model derived to fk model format

    It should be noted that when using fk, the definition of model format is as belows: 1: 2: when using ...

  9. pytest自动化2:测试用例setup和teardown

    前言: pytest支持函数和类两种用例方式,针对每种情况都有不同的代码 pytest用例运行级别 模块级(setup_module/teardown_module)开始于模块始末,全局的 函数级(s ...

  10. 更强大的python正则表达式模块 -- regex

    python内置的正则表达库re比较弱,而且似乎在好几年里都没太大的变化. 这里介绍这个python模块regex,实现了更多方便好用的功能. 比如:\p{han} 可以匹配汉字, \p{Latin} ...