MapEasy答疑(四) 缩放级别level与请求地图数据图片尺寸的关系

作者: 施伟,原文出处: http://www.blogjava.net/crespo9907/archive/2007/03/05/mapeasy_answer4.html,转载请保留。  

    yzhrain在看完我的 MapEasy答疑(三) row,column,level与瓦片显示的关系【很多朋友反复问到的问题】这篇答疑文章后在论坛里又提出了如下两个问题:

    1. 当level=1变为level=2时,瓦片(就是页面上包含img的div)的长与宽是不是不变,比例说:level=1时,瓦片的width和height为256,256,那么level=2时,它的width和height是否还是256,256呢?

    2.在MapEasy中的地图缩放(放大与缩小),是不是这样:放大与缩小,页面上img的width和height都是不变的(假定width=256,height=256).放大时,从服务器请求的图片的实际尺寸为(128*128),简单说,就是用一个256*256的img标签来显示一张实际大小是128*128的图片;相对地,缩小时就是用一个256*256的img标签来显示一张实际大小是512*512的图片.


    Tim Wu给了如下答复:

1、是,tile大小始终不变

2、不是,会取另一堆256*256的img,这些img比原来的放大或缩小了。tile的img图片是实时或预先根据矢量算法算好的,这样图片才不会变形。


    在此对这两个问题做一些的补充。

1. 当地图放大或缩小,即level改变的时候,在浏览器中显示的瓦片(DIV以及包含的IMG)的大小是不会变化的,如果初始化定义为256×256那么变化后仍然是256×256的大小。在 MapEasy答疑(三) row,column,level与瓦片显示的关系【很多朋友反复问到的问题】一文中也举例说明过,假设当前地图由四个瓦片显示:

      A1A2
      B1 B2
     (图一)

放大地图,此时瓦片变成如下排列:

   C1C2C3 C4
   D1 D2D3 D4
   E1 E2 E3 E4
   F1 F2 F3 F4
    (图二)

注:图中相同颜色表示相同的地图范围

    两个图中由大写英文字母和下标代表的瓦片的大小是一样大的。地图放大而瓦片尺寸不变,显然就会需要更多的瓦片来显示。上面的例子就显示当地图的长宽均变为原来的2倍时,地图放大了2×2=4倍,此时瓦片数也变为原来的4倍。

2. 在地图放大和缩小过程中浏览器中的IMG确实是大小不变的,同样从数据源取得的地图图片同样也应该是大小不变的。当地图缩放时,应该是向数据源请求缩放过的地图,而不是简单的把图片进行在IMG标签中强制定义一个尺寸。

    如上面例子中A1显示的地图范围在放大后由C1 C2 D1 D2四个图片共同显示,A1显示图片的大小为256×256,那么C1 C2 D1 D2显示图片的大小仍然均为256×256,合起来为512×512,假设把他们看成一个整体,这个级别上同样范围的地图应该从数据源得到512×512的图片(请注意实际并非如此,便于理解而这样认为)。而 不是仍然为256×256的图片,分成四块后为四个128×128,然后放在四个尺寸为256×256的IMG标签中。

    如果对栅格地图的WebGIS相关概念比较熟悉的话,应该很好理解地图缩放后请求图片的放大和缩小是怎么一回事情。而不是简单的图片的放大和缩小。

    对于类似于MapEasy的WebGIS客户端显示程序,GIS知识是关键理论和基础,JavaScript是关键技术。两者都要同步学习,我在GIS上就是菜鸟,所以碰到很多头疼的问题,做很多无用功。

    希望这篇文章对你理解这两个问题有些帮助!

    也祝愿MapEasy在2007年有更大的发展!


施伟 2007-03-05 11:23 发表评论

你可能感兴趣的:(JavaScript,算法,.net,浏览器)