IMServer:WebClient
From KitwarePublic
Jump to navigationJump to search
Browser based client
Current web client is implemented by using OpenLayers javascript API
- Whenever a client viewing area changes (Due to pan / zoom)
- The client determines the currently visible extent, and queries all the tiles covering current extent with optimal resolution.
Optimizations
- Tile size
- Server side improvements
References
- http://trac.mapfish.org/trac/mapfish/wiki/HowToOptimize
- http://dev.openlayers.org/docs/files/OpenLayers/Layer/Grid-js.html#OpenLayers.Layer.Grid.buffer
Source code
The javascript client code that executes from the web browser can be seen from the demos. Still, the significant code which queries the image tile is as follows -
function get_my_url (bounds) { var res = this.map.getResolution(); var xVal = Math.round ((bounds.left - this.maxExtent.left) / (res * this.tileSize.w)); var yVal = Math.round ((this.maxExtent.top - bounds.top) / (res * this.tileSize.h)); var zoom = this.map.getZoom(); var zoomPow=Math.pow(2,zoom); var tileName = "t"; for(var g=0; g < zoom; g++) { zoomPow = zoomPow / 2; if(yVal < zoomPow) { if(xVal < zoomPow) { tileName += "q"; } else { tileName += "r"; xVal -= zoomPow; } } else { if(xVal < zoomPow) { tileName += "t"; yVal -= zoomPow; } else { tileName += "s"; xVal -= zoomPow; yVal -= zoomPow; } } } if(imageIs3D) { return "http://paraviewweb.kitware.com:82/tiles3.py/n"+ currentSlice +"/" + tileName+".jpg"; //return "http://konoha.kitwarein.com/tiles2/"+tileName+".jpg"; //return baseName + currentSlice + "/" + tileName+".jpg" } else { return imageName + "/" + tileName + ".jpg" } }