[ka-Map-users] kaMap - setTile function - uses openstreetmap servers.
Ionut Muntean
ionut at muntean.ro
Mon May 25 05:52:32 EST 2009
kaMap - setTile function - uses openstreetmap servers.
File that replaces init.php. Paste the code below in a file on your
server and load it at run time instead of init.php.
/*init*/
aszScales = new
Array('110936068.18103503','55468034.09051751','27734017.045258757',
'13867008.522629378','6933504.261313272','3466752.130658053',
'1733376.0653290264','866688.0326645132','433344.0163322566',
'216672.008164711','108336.00408377283','54168.002041886415',
'27084.001020943208','13542.000510471604','6771.000253818478',
'3385.5001283265624','1692.7500655806048');
var mResolutions = new Array('156543.0339', '78271.51695',
'39135.758475', '19567.8792375', '9783.93961875', '4891.969809375',
'2445.984904687',
'1222.992452344', '611.496226172',
'305.748113086', '152.874056543', '76.437028271', '38.218514136',
'19.109257068',
'9.554628534', '4.777314267', '2.388657133',
'1.194328567', '0.597164284');
var map = new
_map({name:'Terra',title:'World',currentScale:2,units:3,resolution:72,version:'3',scales:aszScales,
resolutions:mResolutions});
map.setDefaultExtents(-20037508.34, -200037508.34, 200037508.34,
200037508.34);
map.setBackgroundColor('rgb(244,244,234)');
map.addLayer(new _layer( {
name:'Terra',visible:true,opacity:100,imageformat:'png',queryable:false,tileSource:'auto',redrawInterval:-1,refreshInterval:-1,scales:
new
Array('1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1')}));
this.addMap( map );
this.tileWidth=256;
this.tileHeight=256;
this.server = 'http://xxx.xxx.xxx/';
this.tileURL = 'http://a.tile.osm.dmtech.ro/tiles/';
this.cacheURL = 'http://localcache.xxx.xxx/tiles/';
this.selectMap('Terra');
Replace setTile with the function below.
_layer.prototype.setTile = function(img) {
var tforce = _settings.alwaysForceDraw;
if (arguments.length == 2)
tforce = true;
var mercExtents = new Array('-20037508.34', '20037508.34');
var zIdx = (this._map.currentScale + 2); // osm zooms are from 0 to
18. azScales contains only calculated scales from 2 to 18 ...
var res = this._map.resolutions[zIdx];
var km = this._map.kaMap;
var left = km.cellSize * (safeParseInt(img.style.left) + km.xOrigin);
var top = -1 * km.cellSize * (safeParseInt(img.style.top) + km.yOrigin);
var right = left + km.cellSize * km.tileWidth;
var bottom = top - km.cellSize * km.tileHeight;
if (left < mercExtents[0] || left > mercExtents[2] || top <
mercExtents[0] || top > mercExtents[1]) return false;
var limit = Math.pow(2, zIdx);
var x = Math.round((left - mercExtents[0]) / (res * km.tileWidth));
var y = Math.round((mercExtents[1] - top) / (res * km.tileHeight));
if (y < 0 || y >= limit) return false;
x = ((x % limit) + limit) % limit;
if (tforce) {
var src = this._map.kaMap.tileURL + zIdx + '/' + x + '/' + y + '.png';
} else {
var src = this._map.kaMap.cacheURL + zIdx + '/' + x + '/' + y +
'.png';
}
if (img.src != src) {
img.style.visibility = 'hidden';
img.src = src;
}
};
Have fun!
Ionut Muntean
More information about the ka-Map-users
mailing list