WebGIS中移动功用的宏图和促成

文章版权由小编李晓晖和博客园共有,若转发请于鲜明处标明出处:http://www.cnblogs.com/naaoveGIS/

1.前言

这一章大家将详细讲解WebGIS工具栏中另一个基础工具——平移工具(Pan)。在介绍命令方式时,大家早就精晓了此工具为Tool型的。

以此工具根本有如下四个效益:

A.当切换来此工具上时,按下鼠标不放,移动鼠标时可以拖动地图。

B.当切换来此工具上时,点击鼠标(鼠标不做活动),可以使地图平移,以点击处为主导。

2.设计

2.1 原理

咱俩早就知晓,WebGIS中图层的面目是Canvas。平移效果的落成,其实质就是改变各Canvas的左上角坐标。

此处我给出示意图:

            88bifa必发娱乐 1           

2.2提一个难题

88bifa必发娱乐,当自家把栅格图层所对应的canvas也移步后(事实上,所有的栅格canvas都是一个母容器(mapCanvas)中的child,平移是直接操作mapCanvas),此时大家再将显示器地理范围内的瓦片请求回来时,贴到已经平移后的canvas上,会不会油可是生瓦片展现错乱呢?

答案是:不会的。上面,我大体讲一下缘故。

在大家做运动时,大家不是概括的只对canvas的原点做了移动,我们同时还会更具平移大小换算出真正的地理平移,然后对实际的显示屏地理范围举办相应的更动。这样便会造成一个这么的结果:参与栅格图层的canvas原点是A,平移后改成了A1,而移动后再也请求的瓦片,其每个瓦片的原点所对应的便是A1,而不再是A。那样,我们便解决了移动栅格图层后,重新请求瓦片而招致的瓦片错乱难题。

2.3 平移公式

mapCanvas.y=mapCanvas.y+moveY;

mapCanvas.x=mapCanvas.x+moveX;

screenGeoBounds.bottom=screenGeoBounds.bottom+(sliceLevelLength/tileSize)*(moveY);

screenGeoBounds.top=screenGeoBounds.top+(sliceLevelLength/tileSize)*(moveY);

screenGeoBounds.left=screenGeoBounds.left-(sliceLevelLength/tileSize)*(moveX);

screenGeoBounds.right=screenGeoBounds.right-(sliceLevelLength/tileSize)*(moveX);

个中,mapCanvas表示(栅格或矢量)图层,screenGeoBounds表示屏幕地理范围,slieceLevelLength代表地图当前级别中一个瓦片所表示的莫过于地理长度,tileSize表示的是一张瓦片的屏幕像素。

3.实现

3.1 拖拽平移的贯彻

A.当鼠标触发mouseDown事件时,给全局变量flag赋值true,表示鼠标已经点下,记录下startPoint。

B.当鼠标触发mouseMove事件时,判断flag是还是不是为true,借使是,调用平移公式,使图层出现活动,算出显示器像素的移动mouseX和mouseY。

那里还是能继续增加,即使有此外图层或者功能须要监听到地图平移时间,可以抛出一个地图平移事件,抛出的参数可以设置为那儿鼠标所在的地理坐标(通过鼠标的显示屏坐标转换而得),以及鼠标平移的地理长度(通过mouseX和mouseY转换而得)。显示屏坐标与地理坐标的转换可以参考那一个种类的第十章。

C.当鼠标触发mouseUp事件时,判断屏幕地理范围加上移动的地理长度后,是还是不是在任何瓦片请求的容差范围内,如果在的话不用触发瓦片请求;若是不在的话,则需触发瓦片请求。请求参数即为近年来的显示屏地理范围加上容差范围。

3.2 点击平移的兑现

A.当鼠标触发mouseDown事件时,给全局变量isClick赋值true,其他操作同上。

B.当鼠标触发mouseMove事件时,则将此isClick参数赋值false。

C.当鼠标触发mouseClick事件时,判断isClick是不是为true,尽管是true,则将地图平移到以startPoint为主干的地点。

4. 提三个问题

A.在地图平移后,矢量图层的canvas的XY都发出了转变,此时基于地理坐标转换为显示器坐标公式得出的显示器坐标,在canvas上能将要素正确突显吗?

B.矢量图层canvas的原点坐标XY有须求还原成初始的(0,0)的时候啊?

5.总结

对此首节中的七个难题,我付诸的答案分别是:不能够和内需。解答那三个难点,大家不可能不将事先交付的地理坐标与显示屏坐标互转换公式和后天我们讲到的活动公式合起来看,才能做很好的答应。那一个内容大家将在下一章专门展开教学。欢迎我们持续关切。

 

                                                          
—–欢迎转发,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

                                                                 
如若您认为本文确实援救了你,可以微信扫一扫,举行小额的打赏和鞭策,谢谢
^_^

                                       88bifa必发娱乐 2

 

everybody,good night.

相关文章