地图加载缓存策略

1.电子地图类:

 

    地图的展示实际上就是一个算法问题,假设有一个500X300的可视窗口,需要展示一个地图,地图很大,(256*100) X (256*100)的,如果上来就 两个for循环,那就不对了。这样做,反正用户也只能看到宽口区域的那我们就只加载窗口区域的。

 

    比如:窗口大小 windowW:Number,windowH:Number;

            单位地图大小: uintPicW:Number,uintPicH:Number;

            当前地图坐标:position:Point;

 

   怎样来求出,当前需要记载的图片呢?

这样,如下图,


 

 

我们可以很容易的求出窗口的4个点,所占的地图的索引:

x0 = position.x - windowW/2;

x1 = position.x + windowW/2;

y0 = position.y - windowH/2;

y1 = position.y + windowH/2;

 

mapIndexX0 = uint(x0/256);

mapIndexX1 = uint(x1/256);

mapIndexY0 = uint(y0/256);

mapIndexY1 = uint(y1/256);

 

所以要加载的可视区域地图图片就是, mapIndexX0 - mapIndexX1  mapIndexY0- mapIndexY1区域的图片;

但是,怎么缓存呢,其实就是对得到的这区域的图片在多加载点而已,浏览器会对图片进行缓存。

 

    这样做,上面的mapIndexX0 - mapIndexX1  mapIndexY0- mapIndexY1,是必须要加载的图片的对应索引,加个缓存,比如多加载可视区域外 ? 圈的图片,mapIndexX0-?,mapIndexX1+?,mapIndexY0-?,mapIndexY1+?,当然还要考虑index的最大最小值.

 

 

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