企业如何利用HarmonyOS开发工具提升小程序开发效率与合规性
831
2022-12-02
skyline三维地图与arcgis二维地图联动
无论是二维控制三维,还是三维控制二维,都是通过事件来触发,只不过各自的事件有所区别就是了。这里所说的二维,是指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); }})();
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~