[ka-Map-users] kaMap - setTile function - uses openstreetmap servers.
Lorenzo Becchi
lorenzo at ominiverdi.com
Tue May 26 09:54:49 EST 2009
Ionut, I don't have the time to test this now but sounds very cool
thanks a lot!
Ionut Muntean wrote:
> 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
>
>
> _______________________________________________
> ka-Map-users mailing list
> ka-Map-users at lists.maptools.org
> http://lists.maptools.org/mailman/listinfo/ka-map-users
>
>
More information about the ka-Map-users
mailing list