文章版权由做者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/。缓存
在公司某边界城市的项目中,对方提出由于本身的地图安全度要求比较高,须要实现如下两个需求:安全
a.地图的可视范围永远控制在6平方千米之内。blog
b.系统退出时自动删掉全部缓存到本地的瓦片。get
第二个问题比较简单,不作讨论,这里主要谈谈第一个问题解决的思路。博客
a.不能经过单纯的固定地图大小。由于是地理长度固定,而不是屏幕可视长度固定,换句话说是指,在不一样的地图级别下,可视屏幕长度是变化的,由于此时固定的地理长度对应的可视长度是变化的。因此,单纯的经过调整地图可视屏幕大小是行不通的。原理
b.在可视窗体内,能够进行地图平移。甲方的要求不是仅仅指在地图每一个级别显示固定可见的6平方千米,而是指在能够拖动地图的条件下,只显示可见的6平方千米。扩展
解决这个问题我考虑了两种方案:请求
a.每次控制地图的瓦片请求范围,即只请求以屏幕中心地理坐标为中心点扩展出来的6平方千米地理范围的瓦片。而后将该瓦片请求出来后,换算出各瓦片应该在地图上的屏幕坐标,而后进行添加便可。方法
b.利用遮罩原理,一样以屏幕中心地理坐标为中心点扩展出一个6平方千米的地理范围矩形,而后再将此矩形的四角转换成此时的屏幕坐标,用屏幕四角坐标绘制出此时的遮罩,添加到地图上。im
这里我采用了第二种方法,有兴趣的朋友能够对第一种方法也进行下实验。如下我给出第二种实现方法中具体实现流程:
——欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/