Ticket #995: mapguide.2.patch
| File mapguide.2.patch, 34.3 kB (added by crschmidt, 1 year ago) |
|---|
-
tests/Layer/test_MapGuide.html
old new 1 <html> 2 <head> 3 <script type="text/javascript">var oldAlert = window.alert, gMess; window.alert = function(message) {gMess = message; return true;};</script> 4 <script src='http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAjpkAC9ePGem0lIq5XcMiuhR_wWLPFku8Ix9i2SXYRVK3e45q1BQUd_beF8dtzKET_EteAjPdGDwqpQ'></script> 5 <script type="text/javascript">window.alert = oldAlert;</script> 6 <script src="../../lib/OpenLayers.js"></script> 7 <script type="text/javascript"> 8 var isMozilla = (navigator.userAgent.indexOf("compatible") == -1); 9 var layer; 10 11 var name = 'MapGuide Test Layer'; 12 var url = "http://demo01.dmsolutions.ca/mapguide/mapagent/mapagent.fcgi"; 13 var paramsTiled = { 14 mapDefinition: 'Library://Samples/Gmap/Maps/gmapTiled.MapDefinition', 15 groupName: "BaseLayerGroup", 16 singleTile: false 17 } 18 var paramsUntiled = { 19 mapDefinition: 'Library://Samples/Sheboygan/Maps/Sheboygan.MapDefinition', 20 singleTile: true 21 }; 22 23 function test_01_Layer_MapGuide_untiled_constructor (t) { 24 t.plan( 8 ); 25 26 var trans_format = "image/png"; 27 if (OpenLayers.Util.alphaHack()) { trans_format = "image/gif"; } 28 29 layer = new OpenLayers.Layer.MapGuide(name, url, {}, paramsUntiled); 30 t.ok( layer instanceof OpenLayers.Layer.MapGuide, "new OpenLayers.Layer.MapGuide returns object" ); 31 t.eq( layer.url, "http://demo01.dmsolutions.ca/mapguide/mapagent/mapagent.fcgi", "layer.url is correct (HTTPRequest inited)" ); 32 t.eq( layer.params.mapDefinition, "Library://Samples/Sheboygan/Maps/Sheboygan.MapDefinition", "params passed in correctly" ); 33 34 t.eq( layer.params.operation, "GETMAPIMAGE", "default params set correctly and copied"); 35 36 t.eq(layer.isBaseLayer, true, "no transparency setting, layer is baselayer"); 37 38 paramsUntiled.transparent = "true"; 39 var layer2 = new OpenLayers.Layer.MapGuide(name, url, {}, paramsUntiled); 40 t.eq(layer2.isBaseLayer, false, "transparency == 'true', wms is not baselayer"); 41 42 paramsUntiled.transparent = true; 43 var layer5 = new OpenLayers.Layer.MapGuide(name, url, {}, paramsUntiled); 44 t.eq(layer5.isBaseLayer, false, "transparency == true, wms is not baselayer"); 45 46 paramsUntiled.transparent = false; 47 var layer6 = new OpenLayers.Layer.MapGuide(name, url, {}, paramsUntiled); 48 t.eq(layer6.isBaseLayer, true, "transparency == false, wms is baselayer"); 49 } 50 51 function test_02_Layer_MapGuide_tiled_constructor (t) { 52 t.plan( 6 ); 53 54 var trans_format = "image/png"; 55 if (OpenLayers.Util.alphaHack()) { trans_format = "image/gif"; } 56 57 layer = new OpenLayers.Layer.MapGuide(name, url, {}, paramsTiled); 58 t.ok( layer instanceof OpenLayers.Layer.MapGuide, "new OpenLayers.Layer.MapGuide returns object" ); 59 t.eq( layer.url, "http://demo01.dmsolutions.ca/mapguide/mapagent/mapagent.fcgi", "layer.url is correct (HTTPRequest inited)" ); 60 t.eq( layer.params.basemaplayergroupname, "BaseLayerGroup", "params passed in correctly" ); 61 62 t.eq( layer.params.operation, "GETTILEIMAGE", "default params correctly uppercased and copied"); 63 t.eq( layer.params.version, "1.2.0", "version params set correctly set"); 64 t.eq( layer.gridOrigin, "upperLeft", "grid origin set correctly set"); 65 } 66 /* 67 function test_Layer_MapGuide_bboxEncoding (t) { 68 t.plan( 6 ); 69 70 var url = "http://octo.metacarta.com/cgi-bin/mapserv"; 71 layer = new OpenLayers.Layer.MapGuide(name, url, params, {encodeBBOX:true}); 72 var map = new OpenLayers.Map('map'); 73 map.addLayer(layer); 74 var pixel = new OpenLayers.Pixel(5,6); 75 var tile = layer.addTile(new OpenLayers.Bounds(1,2,3,4), pixel); 76 tile.draw(); 77 78 var img = tile.imgDiv; 79 var tParams = OpenLayers.Util.extend({}, 80 OpenLayers.Util.upperCaseObject(params)); 81 tParams = OpenLayers.Util.extend(tParams, { 82 SERVICE: "WMS", VERSION: "1.1.1", 83 REQUEST: "GetMap", STYLES: "", 84 EXCEPTIONS: "application/vnd.ogc.se_inimage", 85 SRS: "EPSG:4326", BBOX: "1,2,3,4", 86 WIDTH: "256", HEIGHT: "256" 87 }); 88 t.eq( img.src, 89 url + "?" + OpenLayers.Util.getParameterString(tParams), 90 "image src is created correctly via addtile" ); 91 t.eq( tile.frame.style.top, "6px", "image top is set correctly via addtile" ); 92 t.eq( tile.frame.style.left, "5px", "image top is set correctly via addtile" ); 93 94 var firstChild = layer.div.firstChild.firstChild; 95 if (!isMozilla) 96 t.ok( true, "skipping element test outside of Mozilla"); 97 else 98 t.ok( firstChild instanceof HTMLElement, "div first child is an image object" ); 99 t.eq( firstChild.src, 100 url + "?" + OpenLayers.Util.getParameterString(tParams), 101 "div first child is correct image object" ); 102 t.eq( tile.position.toString(), "x=5,y=6", "Position of tile is set correctly." ); 103 map.destroy(); 104 } 105 */ 106 107 function test_03_Layer_MapGuide_inittiles (t) { 108 t.plan( 2 ); 109 var map = new OpenLayers.Map('map'); 110 layer = new OpenLayers.Layer.MapGuide(name, url, paramsTiled); 111 map.addLayer(layer); 112 map.setCenter(new OpenLayers.LonLat(0,400000),5); 113 t.eq( layer.grid.length, 6, "Grid rows is correct." ); 114 t.eq( layer.grid[0].length, 6, "Grid cols is correct." ); 115 map.destroy(); 116 } 117 118 119 function test_04_Layer_MapGuide_clone (t) { 120 t.plan(4); 121 122 var options = {tileSize: new OpenLayers.Size(500,50)}; 123 var map = new OpenLayers.Map('map', options); 124 layer = new OpenLayers.Layer.MapGuide(name, url, {}, paramsTiled); 125 map.addLayer(layer); 126 127 layer.grid = [ [6, 7], 128 [8, 9]]; 129 130 var clone = layer.clone(); 131 132 t.eq( layer.tileSize.w, 300, "layer.tileSize fixed to 300x300"); 133 t.ok( clone.grid != layer.grid, "clone does not copy grid"); 134 135 t.ok( clone.tileSize.equals(layer.tileSize), "tileSize correctly cloned"); 136 137 layer.tileSize.w += 40; 138 139 t.eq( clone.alpha, layer.alpha, "alpha copied correctly"); 140 141 layer.grid = null; 142 map.destroy(); 143 } 144 145 function test_05_Layer_MapGuide_isBaseLayer(t) { 146 t.plan(3); 147 148 layer = new OpenLayers.Layer.MapGuide(name, url, {}, paramsUntiled); 149 t.ok( layer.isBaseLayer, "baselayer is true by default"); 150 151 var newParams = OpenLayers.Util.extend({}, paramsUntiled); 152 newParams.transparent = "true"; 153 layer = new OpenLayers.Layer.MapGuide(name, url, {}, newParams); 154 t.ok( !layer.isBaseLayer, "baselayer is false when transparent is set to true"); 155 156 newParams = OpenLayers.Util.extend({}, paramsUntiled); 157 newParams.isBaseLayer = false; 158 layer = new OpenLayers.Layer.MapGuide(name, url, {}, newParams); 159 t.ok( !layer.isBaseLayer, "baselayer is false when option is set to false" ); 160 } 161 162 function test_06_Layer_MapGuide_mergeNewParams (t) { 163 t.plan( 4 ); 164 165 var map = new OpenLayers.Map("map"); 166 layer = new OpenLayers.Layer.MapGuide(name, url, {}, paramsUntiled); 167 168 var newParams = { mapDefinition: 'Library://Samples/Gmap/Maps/gmap.MapDefinition', 169 chickpeas: 'image/png'}; 170 171 map.addLayer(layer); 172 map.zoomToMaxExtent(); 173 174 layer.redraw = function() { 175 t.ok(true, "layer is redrawn after new params merged"); 176 } 177 178 layer.mergeNewParams(newParams); 179 180 t.eq( layer.params.mapDefinition, "Library://Samples/Gmap/Maps/gmap.MapDefinition", "mergeNewParams() overwrites well"); 181 t.eq( layer.params.chickpeas, "image/png", "mergeNewParams() adds well"); 182 183 newParams.chickpeas = 151; 184 185 t.eq( layer.params.chickpeas, "image/png", "mergeNewParams() makes clean copy of hashtable"); 186 map.destroy(); 187 } 188 189 /* 190 function test_07_Layer_MapGuide_getFullRequestString (t) { 191 192 193 t.plan( 2 ); 194 var map = new OpenLayers.Map('map'); 195 map.projection = "xx"; 196 tUrl = "http://octo.metacarta.com/cgi-bin/mapserv"; 197 tParams = { layers: 'basic', 198 format: 'image/png'}; 199 var tLayer = new OpenLayers.Layer.MapGuide(name, tUrl, tParams); 200 map.addLayer(tLayer); 201 str = tLayer.getFullRequestString(); 202 var tParams = { 203 LAYERS: "basic", FORMAT: "image/png", SERVICE: "WMS", 204 VERSION: "1.1.1", REQUEST: "GetMap", STYLES: "", 205 EXCEPTIONS: "application/vnd.ogc.se_inimage", SRS: "xx" 206 }; 207 t.eq(str, 208 tUrl + "?" + OpenLayers.Util.getParameterString(tParams), 209 "getFullRequestString() adds SRS value"); 210 211 map.removeLayer(tLayer); 212 tLayer.projection = "none"; 213 map.addLayer(tLayer); 214 str = tLayer.getFullRequestString(); 215 delete tParams['SRS']; 216 t.eq(str, 217 tUrl + "?" + OpenLayers.Util.getParameterString(tParams), 218 "getFullRequestString() by default does *not* add SRS value if projection is 'none'"); 219 map.destroy(); 220 221 }*/ 222 223 function test_99_Layer_MapGuide_destroy (t) { 224 225 t.plan( 1 ); 226 227 var map = new OpenLayers.Map('map'); 228 layer = new OpenLayers.Layer.MapGuide(name, url, {}, paramsUntiled); 229 map.addLayer(layer); 230 231 map.setCenter(new OpenLayers.LonLat(0,0), 5); 232 233 //grab a reference to one of the tiles 234 var tile = layer.grid[0][0]; 235 236 layer.destroy(); 237 238 // checks to make sure superclass (grid) destroy() was called 239 240 t.ok( layer.grid == null, "grid set to null"); 241 } 242 243 244 </script> 245 </head> 246 <body> 247 <div id="map" style="width:500px;height:550px"></div> 248 </body> 249 </html> -
tests/list-tests.html
old new 59 59 <li>Layer/test_HTTPRequest.html</li> 60 60 <li>Layer/test_Image.html</li> 61 61 <li>Layer/test_KaMap.html</li> 62 <li>Layer/test_MapGuide.html</li> 62 63 <li>Layer/test_MapServer.html</li> 63 64 <li>Layer/test_Markers.html</li> 64 65 <li>Layer/test_MultiMap.html</li> -
lib/OpenLayers/Layer/Grid.js
old new 58 58 * {Integer} How many tiles are still loading? 59 59 */ 60 60 numLoadingTiles: 0, 61 62 /** 63 * APIProperty: gridOrigin 64 * {String} where to start the 0,0 tile for the grid 65 */ 66 gridOrigin: 'lowerLeft', 61 67 62 68 /** 63 69 * Constructor: OpenLayers.Layer.Grid … … 327 333 var tileoffsetx = -tilecolremain * this.tileSize.w; 328 334 var tileoffsetlon = extent.left + tilecol * tilelon; 329 335 330 var offsetlat = bounds.top - (extent.bottom + tilelat); 331 var tilerow = Math.ceil(offsetlat/tilelat) + this.buffer; 332 var tilerowremain = tilerow - offsetlat/tilelat; 333 var tileoffsety = -tilerowremain * this.tileSize.h; 334 var tileoffsetlat = extent.bottom + tilerow * tilelat; 336 var offsetlat, tilerow, tilerowremain, tileoffsety, tileoffsetlat; 337 if (this.gridOrigin == 'upperLeft') { 338 offsetlat = extent.top - bounds.top + tilelat; 339 tilerow = Math.floor(offsetlat/tilelat) - this.buffer; 340 tilerowremain = tilerow - offsetlat/tilelat; 341 tileoffsety = tilerowremain * this.tileSize.h; 342 tileoffsetlat = extent.top - tilelat*tilerow; 343 } else { //default lower left 344 offsetlat = bounds.top - (extent.bottom + tilelat); 345 tilerow = Math.ceil(offsetlat/tilelat) + this.buffer; 346 tilerowremain = tilerow - offsetlat/tilelat; 347 tileoffsety = -tilerowremain * this.tileSize.h; 348 tileoffsetlat = extent.bottom + tilerow * tilelat; 349 } 335 350 336 351 tileoffsetx = Math.round(tileoffsetx); // heaven help us 337 352 tileoffsety = Math.round(tileoffsety); -
lib/OpenLayers/Layer/MapGuide.js
old new 1 /* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD 2 * licence. See http://svn.openlayers.org/trunk/openlayers/license.txt for the 3 * full text of the license. */ 4 5 /** 6 * @requires OpenLayers/Ajax.js 7 * @requires OpenLayers/Layer/Grid.js 8 * 9 * Class: OpenLayers.Layer.MapGuide 10 * Instances of OpenLayers.Layer.MapGuide are used to display 11 * data from a MapGuide OS instance. 12 * 13 * Inherits from: 14 * - <OpenLayers.Layer.Grid> 15 */ 16 OpenLayers.Layer.MapGuide = OpenLayers.Class(OpenLayers.Layer.Grid, { 17 18 /** 19 * APIProperty: isBaseLayer 20 * {Boolean} Treat this layer as a base layer. Default is true. 21 **/ 22 isBaseLayer: true, 23 24 /** 25 * APIProperty: singleTile 26 * {Boolean} use tile server or request single tile image 27 **/ 28 singleTile: false, 29 30 /** 31 * Constant: TILE_PARAMS 32 * {Object} Hashtable of default parameter key/value pairs for tiled layer 33 */ 34 TILE_PARAMS: { 35 operation: 'GETTILEIMAGE', 36 version: '1.2.0' 37 }, 38 39 /** 40 * Constant: SINGLE_TILE_PARAMS 41 * {Object} Hashtable of default parameter key/value pairs for untiled layer 42 */ 43 SINGLE_TILE_PARAMS: { 44 operation: 'GETMAPIMAGE', 45 version: '1.0.0' 46 }, 47 48 /** 49 * Property: session 50 * {String} MapGuide session ID 51 * (for untiled overlays layers only) 52 **/ 53 session: null, 54 55 /** 56 * Property: mapName 57 * {String} Name of the map as stored in the MapGuide session. 58 * (for untiled overlay layers only) 59 **/ 60 mapName: null, 61 62 /** 63 * Property: mapDefinition 64 * {String} The MapGuide resource definition 65 * (e.g. Library://Samples/Gmap/Maps/gmapTiled.MapDefinition) 66 **/ 67 mapDefinition: null, 68 69 /** 70 * Property: groupName 71 * {String} GroupName for tiled MapGuide layers 72 **/ 73 groupName: null, 74 75 /** 76 * Property: format 77 * {String} Image format to be returned (for untiled overlay layers only) 78 **/ 79 format: 'PNG', 80 81 /** 82 * Property: locale 83 * {String} Locale setting 84 * (for untiled overlays layers only) 85 **/ 86 locale: "en", 87 88 /** 89 * Property: defaultSize 90 * {<OpenLayers.Size>} Tile size as produced by MapGuide server 91 **/ 92 defaultSize: new OpenLayers.Size(300,300), 93 94 /** 95 * Constructor: OpenLayers.Layer.MapGuide 96 * Create a new Mapguide layer, either tiled or untiled. 97 * 98 * For tiled layers, the 'groupName' and 'mapDefnition' options 99 * must be specified as options. 100 * 101 * For untiled layers, specify either combination of 'mapName' and 'session', 102 * or 'mapDefinition' and 'locale'. 103 * 104 * The following parameters are typically set on a per request basis using 105 * mergeNewParams (or similar), but may also be specified once for the layer: 106 * 'showLayers', 'hideLayers', 'showGroups', 'hideGroups', 'selectionXml' 107 * 108 * Parameters: 109 * name - {String} Name of the layer displayed in the interface 110 * url - {String} Location of the MapGuide mapagent executable 111 (e.g. http://localhost:8008/mapguide/mapagent/mapagent.fcgi) 112 * params - {Object} hashtable of additional parameters to use. Some 113 * parameters may require additional code on the serer. The ones that you 114 * may want to use are: 115 * - showLayers - {String} A comma separated list of GUID's for the layers to display 116 * eg: 'cvc-xcv34,453-345-345sdf'. 117 * - hideLayers - {String} A comma separated list of GUID's for the layers to hide eg: 118 * 'cvc-xcv34,453-345-345sdf'. 119 * - showGroups - {String} A comma separated list of GUID's for the groups to display 120 * eg: 'cvc-xcv34,453-345-345sdf'. 121 * - hideGroups - {String} A comma separated list of GUID's for the groups to hide 122 * eg: 'cvc-xcv34,453-345-345sdf' 123 * - selectionXml - {String} A selection xml string Some server plumbing is 124 * required to read such a value. 125 * options - {Ojbect} Hashtable of extra options to tag onto the layer; 126 * will vary depending if tiled or untiled maps are being requested 127 */ 128 initialize: function(name, url, params, options) { 129 130 OpenLayers.Layer.Grid.prototype.initialize.apply(this, arguments); 131 132 // unless explicitly set in options, if the layer is transparent, 133 // it will be an overlay 134 if (options == null || options.isBaseLayer == null) { 135 this.isBaseLayer = ((this.transparent != "true") && 136 (this.transparent != true)); 137 } 138 139 //initialize for untiled layers 140 if (this.singleTile) { 141 if (this.session && this.mapName) { 142 this.params.session = this.session; 143 this.params.mapName = this.mapName; 144 } else if (this.mapDefinition) { 145 this.params.mapDefinition = this.mapDefinition; 146 this.params.locale = this.locale; 147 } 148 this.params.format = this.format; 149 150 OpenLayers.Util.applyDefaults( 151 this.params, 152 this.SINGLE_TILE_PARAMS 153 ); 154 } else { 155 //initialize for tiled layers 156 this.params.mapDefinition = this.mapDefinition; 157 this.params.basemaplayergroupname = this.groupName; 158 OpenLayers.Util.applyDefaults( 159 this.params, 160 this.TILE_PARAMS 161 ); 162 this.setTileSize(this.defaultSize); 163 this.gridOrigin = 'upperLeft'; 164 } 165 }, 166 167 /** 168 * Method: clone 169 * Create a clone of this layer 170 * 171 * Returns: 172 * {<OpenLayers.Layer.MapGuide>} An exact clone of this layer 173 */ 174 clone: function (obj) { 175 if (obj == null) { 176 obj = new OpenLayers.Layer.MapGuide(this.name, 177 this.url, 178 this.params, 179 this.options); 180 } 181 //get all additions from superclasses 182 obj = OpenLayers.Layer.Grid.prototype.clone.apply(this, [obj]); 183 184 return obj; 185 }, 186 187 /** 188 * Method: addTile 189 * Creates a tile, initializes it, and adds it to the layer div. 190 * 191 * Parameters: 192 * bounds - {<OpenLayers.Bounds>} 193 * 194 * Returns: 195 * {<OpenLayers.Tile.Image>} The added OpenLayers.Tile.Image 196 */ 197 addTile:function(bounds,position) { 198 return new OpenLayers.Tile.Image(this, position, bounds, null, this.tileSize); 199 }, 200 201 /** 202 * Method: getURL 203 * Return a query string for this layer 204 * 205 * Parameters: 206 * bounds - {<OpenLayers.Bounds>} A bounds representing the bbox 207 * for the request 208 * 209 * Returns: 210 * {String} A string with the layer's url and parameters and also 211 * the passed-in bounds and appropriate tile size specified 212 * as parameters. 213 */ 214 getURL: function (bounds) { 215 var url; 216 var center = bounds.getCenterLonLat(); 217 var mapSize = this.map.getCurrentSize(); 218 219 if (this.singleTile) { 220 //set up the call for GETMAPIMAGE or GETDYNAMICMAPOVERLAY 221 var params = {}; 222 params.setdisplaydpi = OpenLayers.DOTS_PER_INCH; 223 params.setdisplayheight = mapSize.h*this.ratio; 224 params.setdisplaywidth = mapSize.w*this.ratio; 225 params.setviewcenterx = center.lon; 226 params.setviewcentery = center.lat; 227 params.setviewscale = this.map.getScale(); 228 229 if (!this.isBaseLayer) { 230 // in this case the main image operation is remapped to this 231 this.params.operation = "GETDYNAMICMAPOVERLAYIMAGE"; 232 233 //but we first need to call GETVISIBLEMAPEXTENT to set the extent 234 var getVisParams = {}; 235 getVisParams.operation = "GETVISIBLEMAPEXTENT"; 236 getVisParams.version = "1.0.0"; 237 getVisParams.session = this.session; 238 getVisParams.mapName = this.mapName; 239 getVisParams.format = 'text/xml'; 240 getVisParams = OpenLayers.Util.extend(getVisParams, params); 241 242 new OpenLayers.Ajax.Request(this.url, 243 { parameters: getVisParams, 244 method: 'get', 245 asynchronous: false //must be synchronous call to return control here 246 }); 247 } 248 249 //construct the full URL 250 url = this.getFullRequestString( params ); 251 } else { 252 253 //tiled version 254 var currentRes = this.map.getResolution(); 255 var colidx = Math.floor((bounds.left-this.maxExtent.left)/currentRes); 256 colidx = Math.round(colidx/this.tileSize.w); 257 var rowidx = Math.floor((this.maxExtent.top-bounds.top)/currentRes); 258 rowidx = Math.round(rowidx/this.tileSize.h); 259 260 url = this.getFullRequestString( 261 { 262 tilecol: colidx, 263 tilerow: rowidx, 264 scaleindex: this.resolutions.length - this.map.zoom - 1 265 }); 266 } 267 268 return url; 269 }, 270 271 /** 272 * Method: getFullRequestString 273 * getFullRequestString on MapGuide layers is special, because we 274 * do a regular expression replace on ',' in parameters to '+'. 275 * This is why it is subclassed here. 276 * 277 * Parameters: 278 * altUrl - {String} Alternative base URL to use. 279 * 280 * Returns: 281 * {String} A string with the layer's url appropriately encoded for MapGuide 282 */ 283 getFullRequestString:function(newParams, altUrl) { 284 // use layer's url unless altUrl passed in 285 var url = (altUrl == null) ? this.url : altUrl; 286 287 // if url is not a string, it should be an array of strings, 288 // in which case we will randomly select one of them in order 289 // to evenly distribute requests to different urls. 290 if (typeof url == "object") { 291 url = url[Math.floor(Math.random()*url.length)]; 292 } 293 // requestString always starts with url 294 var requestString = url; 295 296 // create a new params hashtable with all the layer params and the 297 // new params together. then convert to string 298 var allParams = OpenLayers.Util.extend({}, this.params); 299 allParams = OpenLayers.Util.extend(allParams, newParams); 300 // ignore parameters that are already in the url search string 301 var urlParams = OpenLayers.Util.upperCaseObject( 302 OpenLayers.Util.getArgs(url)); 303 for(var key in allParams) { 304 if(key.toUpperCase() in urlParams) { 305 delete allParams[key]; 306 } 307 } 308 var paramsString = OpenLayers.Util.getParameterString(allParams); 309 310 /* MapGuide needs '+' seperating things like bounds/height/width. 311 Since typically this is URL encoded, we use a slight hack: we 312 depend on the list-like functionality of getParameterString to 313 leave ',' only in the case of list items (since otherwise it is 314 encoded) then do a regular expression replace on the , characters 315 to '+' */ 316 paramsString = paramsString.replace(/,/g, "+"); 317 318 if (paramsString != "") { 319 var lastServerChar = url.charAt(url.length - 1); 320 if ((lastServerChar == "&") || (lastServerChar == "?")) { 321 requestString += paramsString; 322 } else { 323 if (url.indexOf('?') == -1) { 324 //serverPath has no ? -- add one 325 requestString += '?' + paramsString; 326 } else { 327 //serverPath contains ?, so must already have paramsString at the end 328 requestString += '&' + paramsString; 329 } 330 } 331 } 332 return requestString; 333 }, 334 CLASS_NAME: "OpenLayers.Layer.MapGuide" 335 }); -
lib/OpenLayers.js
old new 103 103 "OpenLayers/Layer/Yahoo.js", 104 104 "OpenLayers/Layer/HTTPRequest.js", 105 105 "OpenLayers/Layer/Grid.js", 106 "OpenLayers/Layer/MapGuide.js", 106 107 "OpenLayers/Layer/MapServer.js", 107 108 "OpenLayers/Layer/MapServer/Untiled.js", 108 109 "OpenLayers/Layer/KaMap.js", -
examples/mapguide.html
old new 1 <html xmlns="http://www.w3.org/1999/xhtml"> 2 <head> 3 <style type="text/css"> 4 #map { 5 width: 800px; 6 height: 800px; 7 border: 1px solid black; 8 } 9 </style> 10 <script src="../lib/OpenLayers.js"></script> 11 <script type="text/javascript"> 12 13 var map, layer; 14 var url = "http://demo01.dmsolutions.ca/mapguide/mapagent/mapagent.fcgi"; 15 //var url = "/mapguide/mapagent/mapagent.fcgi"; 16 17 //tiled version 18 function init(){ 19 20 OpenLayers.DOTS_PER_INCH = 96; 21 var extent = new OpenLayers.Bounds(-3631568.75,-1293815.5,4491139.5833333321,4937122); 22 var tempScales = [50000000,23207944.16806,10772173.45016,5000000,2320794.41681,1077217.34502,500000,232079.44168,107721.7345,50000]; 23 var mapOptions = { 24 maxExtent: extent, 25 scales: tempScales, 26 units: 'm', 27 projection: 'EPSG:42304' 28 }; 29 map = new OpenLayers.Map( 'map', mapOptions ); 30 map.addControl( new OpenLayers.Control.LayerSwitcher() ); 31 32 var options = { 33 mapDefinition: 'Library://Samples/Gmap/Maps/gmapTiled.MapDefinition', 34 groupName: "BaseLayerGroup", 35 buffer:1, 36 singleTile: false, 37 } 38 var layer = new OpenLayers.Layer.MapGuide( "MapGuide OS tiled layer", url, options ); 39 map.addLayer(layer); 40 41 map.zoomToMaxExtent(); 42 } 43 44 //un-tiled version 45 function initUntiled() { 46 47 OpenLayers.DOTS_PER_INCH = 96; 48 var extent = new OpenLayers.Bounds(-87.865114442365922,43.665065564837931,-87.595394059497067,43.823852564430069); 49 var mapOptions = { 50 maxExtent: extent, 51 maxResolution: 'auto' 52 }; 53 map = new OpenLayers.Map( 'map', mapOptions ); 54 map.addControl( new OpenLayers.Control.LayerSwitcher() ); 55 56 var options = { 57 mapDefinition: 'Library://Samples/Sheboygan/Maps/Sheboygan.MapDefinition', 58 buffer: 1, 59 singleTile: true 60 }; 61 var layer = new OpenLayers.Layer.MapGuide( "MapGuide OS untiled baselayer", url, options ); 62 map.addLayer(layer); 63 64 //this is how to set up the layer for transparent overlays. Requires a valid session ID 65 //and mapName stored in that session. 66 //If the mapagent URL is on a different server than this OL layer, the OpenLayers proxy script 67 //must be used since this layer must perform an additional AJAX request before requesting the 68 //map image 69 var options = { 70 isBaseLayer: false, 71 transparent: true, 72 mapName: 'Sheboygan', 73 session: '0b8cb80e-0000-1000-8003-0017a4e6ff5d_en_C0A802AD0AFC0AFB0AFA', 74 buffer: 1, 75 singleTile: true 76 }; 77 layer = new OpenLayers.Layer.MapGuide( "MapGuide OS Overlay layer", url, options ); 78 //map.addLayer(layer); 79 80 map.zoomToMaxExtent(); 81 } 82 </script> 83 </head> 84 <body onload="initUntiled()"> 85 <p>If prompted for a password, username is Anonymous and an empty password</p> 86 <div id="map"></div> 87 </body> 88 </html> 89 <html xmlns="http://www.w3.org/1999/xhtml"> 90 <head> 91 <style type="text/css"> 92 #map { 93 width: 800px; 94 height: 800px; 95 border: 1px solid black; 96 } 97 </style> 98 <script src="../lib/OpenLayers.js"></script> 99 <script type="text/javascript"> 100 101 var map, layer; 102 var url = "http://demo01.dmsolutions.ca/mapguide/mapagent/mapagent.fcgi"; 103 //var url = "/mapguide/mapagent/mapagent.fcgi"; 104 105 //tiled version 106 function init(){ 107 108 OpenLayers.DOTS_PER_INCH = 96; 109 var extent = new OpenLayers.Bounds(-3631568.75,-1293815.5,4491139.5833333321,4937122); 110 var tempScales = [50000000,23207944.16806,10772173.45016,5000000,2320794.41681,1077217.34502,500000,232079.44168,107721.7345,50000]; 111 var mapOptions = { 112 maxExtent: extent, 113 scales: tempScales, 114 units: 'm', 115 projection: 'EPSG:42304' 116 }; 117 map = new OpenLayers.Map( 'map', mapOptions ); 118 map.addControl( new OpenLayers.Control.LayerSwitcher() ); 119 120 var options = { 121 mapDefinition: 'Library://Samples/Gmap/Maps/gmapTiled.MapDefinition', 122 groupName: "BaseLayerGroup", 123 buffer:1, 124 singleTile: false, 125 } 126 var layer = new OpenLayers.Layer.MapGuide( "MapGuide OS tiled layer", url, options ); 127 map.addLayer(layer); 128 129 map.zoomToMaxExtent(); 130 } 131 132 //un-tiled version 133 function initUntiled() { 134 135 OpenLayers.DOTS_PER_INCH = 96; 136 var extent = new OpenLayers.Bounds(-87.865114442365922,43.665065564837931,-87.595394059497067,43.823852564430069); 137 var mapOptions = { 138 maxExtent: extent, 139 maxResolution: 'auto' 140 }; 141 map = new OpenLayers.Map( 'map', mapOptions ); 142 map.addControl( new OpenLayers.Control.LayerSwitcher() ); 143 144 var options = { 145 mapDefinition: 'Library://Samples/Sheboygan/Maps/Sheboygan.MapDefinition', 146 buffer: 1, 147 singleTile: true 148 }; 149 var layer = new OpenLayers.Layer.MapGuide( "MapGuide OS untiled baselayer", url, options ); 150 map.addLayer(layer); 151 152 //this is how to set up the layer for transparent overlays. Requires a valid session ID 153 //and mapName stored in that session. 154 //If the mapagent URL is on a different server than this OL layer, the OpenLayers proxy script 155 //must be used since this layer must perform an additional AJAX request before requesting the 156 //map image 157 var options = { 158 isBaseLayer: false, 159 transparent: true, 160 mapName: 'Sheboygan', 161 session: '0b8cb80e-0000-1000-8003-0017a4e6ff5d_en_C0A802AD0AFC0AFB0AFA', 162 buffer: 1, 163 singleTile: true 164 }; 165 layer = new OpenLayers.Layer.MapGuide( "MapGuide OS Overlay layer", url, options ); 166 //map.addLayer(layer); 167 168 map.zoomToMaxExtent(); 169 } 170 </script> 171 </head> 172 <body onload="initUntiled()"> 173 <p>If prompted for a password, username is Anonymous and an empty password</p> 174 <div id="map"></div> 175 </body> 176 </html> 177 <html xmlns="http://www.w3.org/1999/xhtml"> 178 <head> 179 <style type="text/css"> 180 #map { 181 width: 800px; 182 height: 800px; 183 border: 1px solid black; 184 } 185 </style> 186 <script src="../lib/OpenLayers.js"></script> 187 <script type="text/javascript"> 188 189 var map, layer; 190 var url = "http://demo01.dmsolutions.ca/mapguide/mapagent/mapagent.fcgi"; 191 //var url = "/mapguide/mapagent/mapagent.fcgi"; 192 193 //tiled version 194 function init(){ 195 196 OpenLayers.DOTS_PER_INCH = 96; 197 var extent = new OpenLayers.Bounds(-3631568.75,-1293815.5,4491139.5833333321,4937122); 198 var tempScales = [50000000,23207944.16806,10772173.45016,5000000,2320794.41681,1077217.34502,500000,232079.44168,107721.7345,50000]; 199 var mapOptions = { 200 maxExtent: extent, 201 scales: tempScales, 202 units: 'm', 203 projection: 'EPSG:42304' 204 }; 205 map = new OpenLayers.Map( 'map', mapOptions ); 206 map.addControl( new OpenLayers.Control.LayerSwitcher() ); 207 208 var options = { 209 mapDefinition: 'Library://Samples/Gmap/Maps/gmapTiled.MapDefinition', 210 groupName: "BaseLayerGroup", 211 buffer:1, 212 singleTile: false, 213 } 214 var layer = new OpenLayers.Layer.MapGuide( "MapGuide OS tiled layer", url, options ); 215 map.addLayer(layer); 216 217 map.zoomToMaxExtent(); 218 } 219 220 //un-tiled version 221 function initUntiled() { 222 223 OpenLayers.DOTS_PER_INCH = 96; 224 var extent = new OpenLayers.Bounds(-87.865114442365922,43.665065564837931,-87.595394059497067,43.823852564430069); 225 var mapOptions = { 226 maxExtent: extent, 227 maxResolution: 'auto' 228 }; 229 map = new OpenLayers.Map( 'map', mapOptions ); 230 map.addControl( new OpenLayers.Control.LayerSwitcher() ); 231 232 var options = { 233 mapDefinition: 'Library://Samples/Sheboygan/Maps/Sheboygan.MapDefinition', 234 buffer: 1, 235 singleTile: true 236 }; 237 var layer = new OpenLayers.Layer.MapGuide( "MapGuide OS untiled baselayer", url, options ); 238 map.addLayer(layer); 239 240 //this is how to set up the layer for transparent overlays. Requires a valid session ID 241 //and mapName stored in that session. 242 //If the mapagent URL is on a different server than this OL layer, the OpenLayers proxy script 243 //must be used since this layer must perform an additional AJAX request before requesting the 244 //map image 245 var options = { 246 isBaseLayer: false, 247 transparent: true, 248 mapName: 'Sheboygan', 249 session: '0b8cb80e-0000-1000-8003-0017a4e6ff5d_en_C0A802AD0AFC0AFB0AFA', 250 buffer: 1, 251 singleTile: true 252 }; 253 layer = new OpenLayers.Layer.MapGuide( "MapGuide OS Overlay layer", url, options ); 254 //map.addLayer(layer); 255 256 map.zoomToMaxExtent(); 257 } 258 </script> 259 </head> 260 <body onload="initUntiled()"> 261 <p>If prompted for a password, username is Anonymous and an empty password</p> 262 <div id="map"></div> 263 </body> 264 </html>
