Показать сообщение отдельно
  #7 (permalink)  
Старый 18.11.2011, 12:21
Новичок на форуме
Отправить личное сообщение для Dravig Посмотреть профиль Найти все сообщения от Dravig
 
Регистрация: 15.11.2011
Сообщений: 4

Вот так загружаются те самые картинки. Тут есть свойство getURL, которое определяется функцией.
var tmsoverlay = new OpenLayers.Layer.TMS( "TMS Overlay", "",
	                {  type: 'png', [B]getURL: overlay_getTileURL,[/B] alpha: true, isBaseLayer: false, displayInLayerSwitcher: true, visibility: true
	                });
 map.addLayer(tmsoverlay);


Вот так выглядит функция overlay_getTileURL:
function overlay_getTileURL(bounds) {
var res = this.map.getResolution();
var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));
var y = Math.round((bounds.bottom - this.tileOrigin.lat) / (res * this.tileSize.h));
var z = this.map.getZoom();
if (mapBounds.intersectsBounds( bounds ) && z >= 4 && z <= 7 ) {
imageSrc = "file:///C:/Work/GIS_GMS/TMS/111301_new/" + z + "/" + x + "/" + y + "." + this.type;
imageSrc1 = onImageExistError(imageSrc);
return imageSrc1;
}else if (mapBounds.intersectsBounds( bounds ) && z >= 8 && z <= 11) {
imageSrc = "file:///C:/Work/GIS_GMS/TMS/12309_rgb/" + z + "/" + x + "/" + y + "." + this.type;
imageSrc1=onImageExistError(imageSrc);
return imageSrc1;
   
}else {
return "http://www.maptiler.org/img/none.png";
 }
}


bounds - границы видимого участка карты
z - зум
x и у - координаты. Причем картинки расфасованы по папкам согласно зуму и координатам.
Таким образом, грузится только то, что попадает на видимую часть карты.
Причем охват двух разных наборов тайлов - разный. И если открыть участок гугловской карты там, где этих тайлов нет, то программа генерирует ссылку и пытается найти несуществующие изображения, не находит, и грузит что попало.
Функция onImageExistError призвана это отслеживать. Однако, она не успевает это сделать для всех тайлов и тоже грузит их как попало.
Ответить с цитированием