无论是二维控制三维,还是三维控制二维,都是通过事件来触发,只不过各自的事件有所区别就是了。这里所说的二维,是指arcgis for jsapi,三维指skyline,都是前端的内容。

其中二维控制三维,可以通过

“onMouseUp” “onMouseWheel” “onExtentChange”

这三个事件;

而三维控制二维,可以通过

“OnLButtonUp” “OnMouseWheel”

这两个事件。

此外,还需要设置一个全局变量,记录当前控制权是在二维还是三维,不然会乱套。

上代码:

(function () {var map = parent.map;//二维地图。二维、三维各自放在一个iframe里。var sgworld = parent.sgworld;//三维对象var token = parent.token;//当前控制权在二维还是三维?//二维控制三维dojo.connect(map, "onMouseUp", function () {token.set2D();//当前控制权在二维});dojo.connect(map, "onMouseWheel", function () {token.set2D();});dojo.connect(map, "onExtentChange", function(eve) {if (token.is3D()) return;var pointLB = utils.xyToLngLat(eve.xmin, eve.ymin);//左下var pointRT = utils.xyToLngLat(eve.xmax, eve.ymax);//右上var xMax = pointRT[0];var yMax = pointRT[1];var xMin = pointLB[0];var yMin = pointLB[1];_move3DMapTo(xMax, yMax, xMin, yMin);});//三维控制二维sgworld.AttachEvent("OnLButtonUp", function () {token.set3D();//当前控制权在三维_move2DMapTo();});sgworld.AttachEvent("OnMouseWheel", function () {token.set3D();_move2DMapTo();});function _move2DMapTo() {//二维跟随移动var rect = sgworld.Window.Rect;var positionMax = sgworld.Window.PixelToWorld(0, rect.Height - 1, -1).Position;var positionMin = sgworld.Window.PixelToWorld(rect.Width - 1, 0, -1).Position;var extent = new esri.geometry.Extent({ "xmax": positionMin.X, "ymax": positionMin.Y, "xmin": positionMax.X, "ymin": positionMax.Y });map.setExtent(extent);}function _move3DMapTo(xMax, yMax, xMin, yMin) {//三维跟随移动var lgtd = (xMax + xMin) / 2;var lttd = (yMax + yMin) / 2;var altitude = sgworld.CoordServices.GetDistance(xMax, yMax, xMin, yMin);var altitudeTypeCode = 0;var yaw = 0.0;var pitch = -90;var roll = 0.0;var distance = sgworld.CoordServices.GetDistance(xMax, yMax, xMin, yMin);var pPosition = sgworld.Creator.CreatePosition(lgtd, lttd, altitude, altitudeTypeCode, yaw, pitch, roll, distance);sgworld.Navigate.SetPosition(pPosition);}
})();

skyline三维地图与arcgis二维地图联动相关推荐

  1. Echarts 地图概述及二维地图初始化

    Echarts 可以绘制中国.各省及世界地图,包括二维地图和三维地图,下面就如何生成地图做概要介绍. 1  地图功能概述 Echarts 中,如果需要将区域数据可视化,使用 series 中的地图组件 ...

  2. arcgis for android(二)显示二维地图

    1.上一节讲了 arcgis for android 入门与提高(一)配置环境https://blog.csdn.net/HB_Programmer/article/details/119967868 ...

  3. 01 创建一个二维地图

    随着3.X系列版本新功能的不再增加,终于开始向4.X版本转变,其实说实话还是蛮不想转变的,因为相对于3.X版本的API,4.X版本里面的功能目前为止还是有点少的,但大势所趋,只能硬着头皮转了. 首先, ...

  4. maptalks+three.js+vue webpack项目实现二维地图上贴三维模型

    我们不是走在坑里就是走在前往坑的路上_(:зゝ∠)_ 最终效果如图:(地图上添加一个"三维地图"的toolbar按钮,点击后在二维地图上贴上建好的三维模型点击显示弹框) 以下都在已 ...

  5. 二维地图展示爆管分析

    作者:doremi 管线系统管理目前大多数都是使用三维客户端来实现的,爆管分析也是在三维客户端上展示的.但是最近有很多客户的来电询问如何在二维地图上实现管线的一些分析功能.因此,本文将介绍如何在二维地 ...

  6. 寻路优化(一)——二维地图上A*启发函数的设计探索

    工作中需要优化A*算法,研究了一天,最后取得了不错的效果.看网上的朋友还没有相关的研究,特此记录一下.有错误欢迎大家批评指正.如需转载请注明出处,http://www.cnblogs.com/Leon ...

  7. UE4 二维地图的缩放与拖拽操作

    这里写自定义目录标题 UE4 二维地图的缩放与拖拽操作 拖拽和缩放 基础搭建 添加小图标 地图缩放 地图拖拽 实现部分 效果展示 小图标的重合显示 效果展示 UE4 二维地图的缩放与拖拽操作 纯蓝图实 ...

  8. 如何生成gazebo仿真环境的二维地图真值

    在移动机器人仿真中,二维地图真值可以用来评价slam建图结果,也可以直接给路径规划算法提供输入. 利用gazebo进行仿真时,有很多方法都可以获取静态仿真环境的二维地图真值,本文将对以下链接: hyf ...

  9. 用字节数组存放二维地图数据

    一 二维地图数据内容 在RPG的大地图中,我们往往会分割成很多小块(逻辑上),用于玩家行走,比如使用A星寻路等等,就需要的二维地图数据.一般情况,存放的是数值,主要是指每个格子里的数值,这里的数值是指 ...

最新文章

  1. java的常见异常与错误总结
  2. Java基础-四要素之一《封装》
  3. Vue+Openlayers+Draw实现画笔切换功能,切换画笔为点、线、面
  4. TortoiseGit 冲突和解决方案_入门试炼_07
  5. linux如何调试脚本文件目录,如何在Linux下调试Bash Shell脚本的方法
  6. zibll子比主题v5.4免授权修复版
  7. PYPL 6 月编程语言排行
  8. shell 脚本学习及troubleshooting
  9. python怎么做情感分析_如何用python进行情感分析
  10. linux内核ip分片函数ip_fragment解析
  11. 一看就明白的超标量超流水线超线程简介
  12. SpreadJS 15.2.3 黄金十月美好版
  13. 斐讯n1 无线打印服务器,斐讯N1 设置旁路由(网关)的方法 | nas2x
  14. java 调用 pb dll_[转载]一个java调用delphi写的dll问题,郁闷了一天一晚解决
  15. 外贸邮箱购买申请哪个好?办公邮箱哪个比较好 工作用什么邮箱?
  16. 如何用Python写一个安卓APP
  17. 51单片机学习——中断
  18. 无符号数与有符号数比较
  19. java虚拟机最新安卓版apk
  20. 双网卡同时上网如何设置 双网卡同时上内外网络

热门文章

  1. idea调用自己的方法(introduce local variable)
  2. 趣头条视频解析去水印原理分析过程及源码,简单又有趣
  3. win7 快捷键 收集
  4. 连个字体反爬都搞不定?你还说你会爬虫?看完这篇就会了。
  5. 在ubuntu上搭建IC数模混合环境
  6. 苹果手机打电话没有声音怎么回事_网页看视频没有声音怎么回事?
  7. 使用vuepress-reco主题创建博客
  8. 用vc++穷举windows应用程序密码(上)
  9. 深入浅出 RPC - 浅出篇
  10. 关于Excel自定义TEXTJOIN函数、SWITCH函数