> Would be possible to show us the code snippets for TMS maptiles
> without a server using the file created by maptiler?
>
> I like to see e.g. overlay_getTileURL / (your custom getURL to fetch
> the tile) function with file protocol (file://) in local directory.
>
Sure. tms tiles in a directory on disk has relative of
Content/outputs/Magnetics
lay.imageBounds is tms bounds in lat/long (so dproj is a 4326 projection
and proj is 900913)
lay.minZoom and maxZoom and the zoom you specified when you created the
TMS. I could do this the
"proper" OL way but its a pain to calculate and setup. This works just fine.
tmsLayer = new OpenLayers.Layer.TMS(lay.name,
'Content/outputs/', {
type: 'png',
alpha: true,
serviceVersion: '',
layername: 'Magnetics',
tileExtent: new OpenLayers.Bounds(lay.imageBounds.left,
lay.imageBounds.bottom, lay.imageBounds.right,
lay.imageBounds.top).transform(dproj, proj),
mapMinZoom: lay.imageMinZoom,
mapMaxZoom: lay.imageMaxZoom,
getURL: tms_getTileURL,
displayOutsideMaxExtent: true,
zoomOffset: 0,
isBaseLayer: lay.baselayer
});
the getURL to use is:
function tms_getTileURL(bounds) {
adjustBounds(bounds, this.maxExtent);
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();
z = this.serverResolutions != null ?
OpenLayers.Util.indexOf(this.serverResolutions, res) : z + this.zoomOffset;
if (this.tileExtent.left > this.tileExtent.right) {
var b1 = new OpenLayers.Bounds(this.tileExtent.left,
this.tileExtent.bottom, this.map.maxExtent.right, this.tileExtent.top);
var b2 = new OpenLayers.Bounds(this.map.maxExtent.left,
this.tileExtent.bottom, this.tileExtent.right, this.tileExtent.top);
if ((b1.intersectsBounds(bounds) ||
b2.intersectsBounds(bounds)) && z >= this.mapMinZoom && z <=
this.mapMaxZoom) {
return this.url + this.serviceVersion + "/" +
this.layername + "/" + z + "/" + x + "/" + y + "." + this.type;
} else {
return "images/none.png";
}
} else {
if (this.tileExtent.intersectsBounds(bounds) && z >=
this.mapMinZoom && z <= this.mapMaxZoom) {
return this.url + this.serviceVersion + "/" +
this.layername + "/" + z + "/" + x + "/" + y + "." + this.type;
} else {
return "images/none.png";
}
}
}
Note that instead of returning a null image, I am looking at css that
gives blank tile when tileurlload fails. If I can get this to work, then
it is easily to have merge TMS into one mozaic which dont have complete
tile coverage.
--
Phil Scadden, Senior Scientist GNS Science Ltd 764 Cumberland St,
Private Bag 1930, Dunedin, New Zealand Ph +64 3 4799663, fax +64 3 477 5232
Notice: This email and any attachments are confidential. If received in error
please destroy and immediately notify us. Do not copy or disclose the contents.
_______________________________________________
Users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/openlayers-users