Adjust how the parameters are calculated for the GETVISIBLEMAPEXTENT call for overlays so that existing parameters are safely overwritten with the required parameters for this call. r=me (Closes #1647)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@7928 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
Paul Spencer
2008-09-02 15:46:35 +00:00
parent f8d3e41105
commit ede7bef13c
+21 -10
View File
@@ -28,7 +28,7 @@ OpenLayers.Layer.MapGuide = OpenLayers.Class(OpenLayers.Layer.Grid, {
* {Boolean} use tile server or request single tile image. Note that using * {Boolean} use tile server or request single tile image. Note that using
* singleTile *and* isBaseLayer false is *not recommend*: it uses synchronous * singleTile *and* isBaseLayer false is *not recommend*: it uses synchronous
* XMLHttpRequests to load tiles, and this will *lock up users browsers* * XMLHttpRequests to load tiles, and this will *lock up users browsers*
* during requests. * during requests if the server fails to respond.
**/ **/
singleTile: false, singleTile: false,
@@ -63,18 +63,29 @@ OpenLayers.Layer.MapGuide = OpenLayers.Class(OpenLayers.Layer.Grid, {
* Constructor: OpenLayers.Layer.MapGuide * Constructor: OpenLayers.Layer.MapGuide
* Create a new Mapguide layer, either tiled or untiled. * Create a new Mapguide layer, either tiled or untiled.
* *
* For tiled layers, the 'groupName' and 'mapDefnition' options * For tiled layers, the 'groupName' and 'mapDefinition' values
* must be specified as options. * must be specified as parameters in the constructor.
* *
* For untiled layers, specify either combination of 'mapName' and * For untiled base layers, specify either combination of 'mapName' and
* 'session', or 'mapDefinition' and 'locale'. * 'session', or 'mapDefinition' and 'locale'.
* *
* For untiled overlay layers (singleTile=true and isBaseLayer=false),
* mapName and session are required parameters for the Layer constructor.
* Also NOTE: untiled overlay layers issues a synchronous AJAX request
* before the image request can be issued so the users browser may lock
* up if the MG Web tier does not respond in a timely fashion.
*
* NOTE: MapGuide OS uses a DPI value and degrees to meters conversion
* factor that are different than the defaults used in OpenLayers,
* so these must be adjusted accordingly in your application.
* See the MapGuide example for how to set these values for MGOS.
*
* Parameters: * Parameters:
* name - {String} Name of the layer displayed in the interface * name - {String} Name of the layer displayed in the interface
* url - {String} Location of the MapGuide mapagent executable * url - {String} Location of the MapGuide mapagent executable
* (e.g. http://localhost:8008/mapguide/mapagent/mapagent.fcgi) * (e.g. http://localhost:8008/mapguide/mapagent/mapagent.fcgi)
* params - {Object} hashtable of additional parameters to use. Some * params - {Object} hashtable of additional parameters to use. Some
* parameters may require additional code on the serer. The ones that * parameters may require additional code on the server. The ones that
* you may want to use are: * you may want to use are:
* - mapDefinition - {String} The MapGuide resource definition * - mapDefinition - {String} The MapGuide resource definition
* (e.g. Library://Samples/Gmap/Maps/gmapTiled.MapDefinition) * (e.g. Library://Samples/Gmap/Maps/gmapTiled.MapDefinition)
@@ -116,6 +127,7 @@ OpenLayers.Layer.MapGuide = OpenLayers.Class(OpenLayers.Layer.Grid, {
this.params, this.params,
this.SINGLE_TILE_PARAMS this.SINGLE_TILE_PARAMS
); );
} else { } else {
//initialize for tiled layers //initialize for tiled layers
OpenLayers.Util.applyDefaults( OpenLayers.Util.applyDefaults(
@@ -196,16 +208,15 @@ OpenLayers.Layer.MapGuide = OpenLayers.Class(OpenLayers.Layer.Grid, {
//but we first need to call GETVISIBLEMAPEXTENT to set the extent //but we first need to call GETVISIBLEMAPEXTENT to set the extent
var getVisParams = {}; var getVisParams = {};
getVisParams = OpenLayers.Util.extend(getVisParams, params);
getVisParams.operation = "GETVISIBLEMAPEXTENT"; getVisParams.operation = "GETVISIBLEMAPEXTENT";
getVisParams.version = "1.0.0"; getVisParams.version = "1.0.0";
getVisParams.session = this.params.session; getVisParams.session = this.params.session;
getVisParams.mapName = this.params.mapName; getVisParams.mapName = this.params.mapName;
getVisParams.format = 'text/xml'; getVisParams.format = 'text/xml';
getVisParams = OpenLayers.Util.extend(getVisParams, params); url = this.getFullRequestString( getVisParams );
OpenLayers.Request.GET({ OpenLayers.Request.GET({url: url, async: false});
url: this.url, params: getVisParams, async: false
});
} }
//construct the full URL //construct the full URL
@@ -225,7 +236,7 @@ OpenLayers.Layer.MapGuide = OpenLayers.Class(OpenLayers.Layer.Grid, {
tilerow: rowidx, tilerow: rowidx,
scaleindex: this.resolutions.length - this.map.zoom - 1 scaleindex: this.resolutions.length - this.map.zoom - 1
}); });
} }
return url; return url;
}, },