从底层开发谈WebGIS中实现地理长度固定的可视窗口的思路和方法

简介: 文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/。 1.具体问题 在公司某边界城市的项目中,对方提出因为自己的地图安全度要求比较高,需要实现以下两个需求: a.地图的可视范围永远控制在6平方公里以内。

文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

1.具体问题

在公司某边界城市的项目中,对方提出因为自己的地图安全度要求比较高,需要实现以下两个需求:

a.地图的可视范围永远控制在6平方公里以内。

b.系统退出时自动删掉所有缓存到本地的瓦片。

第二个问题比较简单,不做讨论,这里主要谈谈第一个问题解决的思路。

2.问题分析

a.不能通过单纯的固定地图大小。因为是地理长度固定,而不是屏幕可视长度固定,换句话说是指,在不同的地图级别下,可视屏幕长度是变化的,因为此时固定的地理长度对应的可视长度是变化的。所以,单纯的通过调整地图可视屏幕大小是行不通的。

b.在可视窗体内,可以进行地图平移。甲方的要求不是仅仅指在地图每个级别显示固定可见的6平方公里,而是指在可以拖动地图的条件下,只显示可见的6平方公里。

3.解决思路

解决这个问题我考虑了两种方案:

a.每次控制地图的瓦片请求范围,即只请求以屏幕中心地理坐标为中心点扩展出来的6平方公里地理范围的瓦片。然后将该瓦片请求出来后,换算出各瓦片应该在地图上的屏幕坐标,然后进行添加即可。

b.利用遮罩原理,同样以屏幕中心地理坐标为中心点扩展出一个6平方公里的地理范围矩形,然后再将此矩形的四角转换成此时的屏幕坐标,用屏幕四角坐标绘制出此时的遮罩,添加到地图上。

4.具体实现

这里我采用了第二种方法,有兴趣的朋友可以对第一种方法也进行下实验。以下我给出第二种实现方法中具体实现流程:

                       

5.例子图

 

 

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

 

相关文章
让集合数据操控指尖舞动:迭代器和生成器的精妙之处
让集合数据操控指尖舞动:迭代器和生成器的精妙之处
ArcMap矢量图层的零碎、空洞区域填补与独立区域剔除:消除面部件
本文介绍在ArcMap软件中,基于消除面部件(“Eliminate Polygon Part”)工具,对矢量面要素的零碎、空洞区域加以删除,同时将游离于要素主体之外的部分剔除的方法~
112724 1
ArcMap矢量图层的零碎、空洞区域填补与独立区域剔除:消除面部件
小功能⭐️Unity 如何判断物体是否在摄像机视野内或外
小功能⭐️Unity 如何判断物体是否在摄像机视野内或外
unity2d实现一个全方位的无限随机地图
unity2d实现一个全方位的无限随机地图
570 0
|
11月前
ArcGIS矢量面要素中零碎小面积空洞区域补全与单独部分区域分离并剔除
ArcGIS矢量面要素中零碎小面积空洞区域补全与单独部分区域分离并剔除
204 1
Unity Hololens2开发|(八)MRTK3空间操作 BoundsControl(边界控制)
Unity Hololens2开发|(八)MRTK3空间操作 BoundsControl(边界控制)
(第21列)C语言典型题:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
(第21列)C语言典型题:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
(第21列)C语言典型题:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
【芯片前端】保持代码手感——不重叠序列检测
【芯片前端】保持代码手感——不重叠序列检测
111 0
(设计题)造一个凳子(stool)是由三个圆柱体组成,分别表示它的 顶部,中部和底部。计算凳子的体积和表面积(忽略重叠的部分)。 请设计UML图(包括类以及类的关系,可以省略方法和属性),并完成代码。
(设计题)造一个凳子(stool)是由三个圆柱体组成,分别表示它的 顶部,中部和底部。计算凳子的体积和表面积(忽略重叠的部分)。 请设计UML图(包括类以及类的关系,可以省略方法和属性),并完成代码。
223 0
(设计题)造一个凳子(stool)是由三个圆柱体组成,分别表示它的 顶部,中部和底部。计算凳子的体积和表面积(忽略重叠的部分)。 请设计UML图(包括类以及类的关系,可以省略方法和属性),并完成代码。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等