热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

skyline三维地图与arcgis二维地图联动

无论是二维控制三维,还是三维控制二维,都是通过事件来触发,只不过各自的事件有所区别就是了。其中二维控制三维,可以通过“onMouseUp”“onMouseWheel”“onExtentChan

无论是二维控制三维,还是三维控制二维,都是通过事件来触发,只不过各自的事件有所区别就是了。

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

“onMouseUp” “onMouseWheel” “onExtentChange”

这三个事件;

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

“OnLButtonUp” “OnMouseWheel”

这两个事件。

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

上代码:

(function () {
var map = parent.map;//本代码写在三维所在页面。二维、三维各自放在一个iframe里。
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);
}
})
();

推荐阅读
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • 本文介绍了在go语言中利用(*interface{})(nil)传递参数类型的原理及应用。通过分析Martini框架中的injector类型的声明,解释了values映射表的作用以及parent Injector的含义。同时,讨论了该技术在实际开发中的应用场景。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • 工作经验谈之-让百度地图API调用数据库内容 及详解
    这段时间,所在项目中要用到的一个模块,就是让数据库中的内容在百度地图上展现出来,如经纬度。主要实现以下几点功能:1.读取数据库中的经纬度值在百度上标注出来。2.点击标注弹出对应信息。3 ... [详细]
  • python+selenium十:基于原生selenium的二次封装fromseleniumimportwebdriverfromselenium.webdriv ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • Java大文件HTTP断点续传到服务器该怎么做?
    最近由于笔者所在的研发集团产品需要,需要支持高性能的大文件http上传,并且要求支持http断点续传。这里在简要归纳一下,方便记忆 ... [详细]
author-avatar
梦之舞的微薄极_922
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有