A Custom Tile Source can be created via inline configuration by specifying
a single function named getTileUrl
, along with the required
values for height
and width
. Optional values
include tileSize
, tileOverlap
,
minLevel
, and maxLevel
. Additionally, any
default functions implemented by OpenSeadragon.TileSource
can be overridden. Functionally, this allows you to define a new
TileSource
implementation inline.
Alternatively, you can create a new tile source which implements the
required interfaces getTileUrl
, configure
, and
supports
.
Minimally, an inline configuration for a custom tile source only needs
to implement the getTileUrl
interface and provide a
height and width for the maximum resolution of the image.
Below is a minimal inline configuration which pulls tiles from a NASA
Blue Marble tile set transformed into tiles hosted on Amazon S3
(compliments of
Michal Migurski). Note that the default tileSize
is
available as a property of the tile source.
OpenSeadragon({ id: "example-custom-tilesource", prefixUrl: "/openseadragon/images/", navigatorSizeRatio: 0.25, wrapHorizontal: true, tileSources: { height: 512*256, width: 512*256, tileSize: 256, minLevel: 8, getTileUrl: function( level, x, y ){ return "http://s3.amazonaws.com/com.modestmaps.bluemarble/" + (level-8) + "-r" + y + "-c" + x + ".jpg"; } } });
Here is another inline example which makes use of a tile set created by Aaron Straup Cope which provides a visualization of geotagged Flickr photos.
Note in this case we set blendTime
to zero since PNG
images with alpha channel (transparency) can look unusual during
blending.
OpenSeadragon({ ... showNavigator: false, blendTime: 0, wrapHorizontal: true, tileSources: { height: 1024*256, width: 1024*256, tileSize: 256, minLevel: 9, getTileUrl: function( level, x, y ){ function zeropad( i ) { var n = String( i ), m = 6 - n.length; n = (m < 1) ? n : new Array(m + 1).join( "0" ) + n; return n.substr(0, 3) + "/" + n.substr(3); }; return "http://s3.amazonaws.com/info.aaronland.tiles.shapetiles/" + (level-8) + "/" + zeropad(x) + "/" + zeropad(y) + ".png"; } } ... });