Quintiq file version 2.0
|
#parent: #root
|
Method DoGetCapabilities
|
{
|
#keys: '1[103544.0.740661339]'
|
TextBody:
|
[*
|
// Administrator Mar-12-2012 (created)
|
utils := this.LibOSM_Utils();
|
result := this.Result();
|
mapcapabilitieshandle := result.GetHandle( "mapcapabilities" );
|
tiledhandle := result.GetHandle( "tiled" );
|
widthhandle := result.GetHandle( "width" );
|
heighthandle := result.GetHandle( "height" );
|
srswkthandle := result.GetHandle( "srswkt" );
|
boundingboxhandle := result.GetHandle( "boundingbox" );
|
lefttophandle := result.GetHandle( "lefttop" );
|
xhandle := result.GetHandle( "x" );
|
yhandle := result.GetHandle( "y" );
|
rightbottomhandle := result.GetHandle( "rightbottom" );
|
originhandle := result.GetHandle( "origin" );
|
formathandle := result.GetHandle( "format" );
|
resolutionshandle := result.GetHandle( "resolutions" );
|
resolutionhandle := result.GetHandle( "resolution" );
|
cachecapabilitieshandle := result.GetHandle( "cachecapabilities" );
|
maxnrtileshandle := result.GetHandle( "maxnrtiles" );
|
resultroot := result.Root();
|
|
mapcapabilities := resultroot.AddChild( mapcapabilitieshandle );
|
tiled := mapcapabilities.AddChild( tiledhandle );
|
tiled.AddChild( widthhandle, 256 );
|
tiled.AddChild( heighthandle, 256 );
|
srswkt := tiled.AddChild( srswkthandle );
|
srswkt.SetValue( LibOSM_OSMGISLibrary::GetMapSRSWKT() );
|
boundingbox := tiled.AddChild( boundingboxhandle );
|
lefttop := boundingbox.AddChild( lefttophandle );
|
lefttop.AddChild( xhandle, -20037508.34 );
|
lefttop.AddChild( yhandle, 20037508.34 );
|
rightbottom := boundingbox.AddChild( rightbottomhandle );
|
rightbottom.AddChild( xhandle, 20037508.34 );
|
rightbottom.AddChild( yhandle, -20037508.34 );
|
origin := tiled.AddChild( originhandle );
|
origin.AddChild( xhandle, -20037508.34 );
|
origin.AddChild( yhandle, -20037508.34 );
|
format := tiled.AddChild( formathandle );
|
format.SetValue( LibOSM_OSMGISLibrary::GetDefaultImageFormat() );
|
resolutions := tiled.AddChild( resolutionshandle );
|
// resolution: map units per pixel (map units are typically degrees or meters)
|
// References:
|
// http://wiki.openstreetmap.org/wiki/FAQ#What_is_the_map_scale_for_a_particular_zoom_level_of_the_map.3F
|
// http://almien.co.uk/OSM/Tools/Scale/
|
// http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames
|
// http://www.maptiler.org/google-maps-coordinates-tile-bounds-projection/
|
// The resolution of the zoom level 0 is ( 2 * 20037508.34 ) / 256 = 156543.03390625
|
// The resolution of zoom level i is resolution_zoom_level_(i-1) / 2, i >= 1, i < = 18
|
// To preserve as much precision as possible, the divisions were made using the exact value of the resolution of the previous level; however, the results were truncated to 8 digits of precision.
|
resolutions.AddChild( resolutionhandle, 156543.03390625 ); // Zoom level 0 (1 tile)
|
resolutions.AddChild( resolutionhandle, 78271.51695312 ); // Zoom level 1 (2x2 = 4 tiles); exact value: 78271.516953125
|
resolutions.AddChild( resolutionhandle, 39135.75847656 ); // Zoom level 2 (4x4 = 16 tiles); exact value: 39135.7584765625
|
resolutions.AddChild( resolutionhandle, 19567.87923828 ); // Zoom level 3; exact value: 19567.87923828125
|
resolutions.AddChild( resolutionhandle, 9783.93961914 ); // Zoom level 4; exact value: 9783.939619140625
|
resolutions.AddChild( resolutionhandle, 4891.96980957 ); // Zoom level 5; exact value: 4891.9698095703125
|
resolutions.AddChild( resolutionhandle, 2445.98490478 ); // Zoom level 6; exact value: 2445.98490478515625
|
resolutions.AddChild( resolutionhandle, 1222.99245239 ); // Zoom level 7; exact value: 1222.992452392578125
|
resolutions.AddChild( resolutionhandle, 611.49622619 ); // Zoom level 8; exact value: 611.4962261962890625
|
resolutions.AddChild( resolutionhandle, 305.74811309 ); // Zoom level 9; exact value: 305.74811309814453125
|
resolutions.AddChild( resolutionhandle, 152.87405654 ); // Zoom level 10; exact value: 152.874056549072265625
|
resolutions.AddChild( resolutionhandle, 76.43702827 ); // Zoom level 11; exact value: 76.4370282745361328125
|
resolutions.AddChild( resolutionhandle, 38.21851413 ); // Zoom level 12; exact value: 38.21851413726806640625
|
resolutions.AddChild( resolutionhandle, 19.10925706 ); // Zoom level 13; exact value: 19.109257068634033203125
|
resolutions.AddChild( resolutionhandle, 9.55462853 ); // Zoom level 14; exact value: 9.5546285343170166015625
|
resolutions.AddChild( resolutionhandle, 4.77731426 ); // Zoom level 15; exact value: 4.77731426715850830078125
|
resolutions.AddChild( resolutionhandle, 2.38865713 ); // Zoom level 16; exact value: 2.388657133579254150390625
|
resolutions.AddChild( resolutionhandle, 1.19432856 ); // Zoom level 17; exact value: 1.1943285667896270751953125
|
resolutions.AddChild( resolutionhandle, 0.59716428 ); // Zoom level 18; exact value: 0.59716428339481353759765625
|
|
cachecapabilities := tiled.AddChild( cachecapabilitieshandle );
|
cachecapabilities.AddChild( maxnrtileshandle, utils.GetOrCorrectMaxNrTilesSetting() );
|
|
utils.DebugDump( "getcapabilities_result.txt", resultroot );
|
|
this.Done();
|
*]
|
}
|