| | 266 | getImageFilePath:function(newParams, altUrl) { |
|---|
| | 267 | |
|---|
| | 268 | |
|---|
| | 269 | // use layer's url unless altUrl passed in |
|---|
| | 270 | var url = (altUrl == null) ? this.url : altUrl; |
|---|
| | 271 | |
|---|
| | 272 | // if url is not a string, it should be an array of strings, |
|---|
| | 273 | // in which case we will randomly select one of them in order |
|---|
| | 274 | // to evenly distribute requests to different urls. |
|---|
| | 275 | if (typeof url == "object") { |
|---|
| | 276 | url = url[Math.floor(Math.random()*url.length)]; |
|---|
| | 277 | } |
|---|
| | 278 | // requestString always starts with url |
|---|
| | 279 | var requestString = url; |
|---|
| | 280 | |
|---|
| | 281 | // create a new params hashtable with all the layer params and the |
|---|
| | 282 | // new params together. then convert to string |
|---|
| | 283 | var allParams = OpenLayers.Util.extend({}, this.params); |
|---|
| | 284 | allParams = OpenLayers.Util.extend(allParams, newParams); |
|---|
| | 285 | // ignore parameters that are already in the url search string |
|---|
| | 286 | var urlParams = OpenLayers.Util.upperCaseObject( |
|---|
| | 287 | OpenLayers.Util.getArgs(url)); |
|---|
| | 288 | for(var key in allParams) { |
|---|
| | 289 | if(key.toUpperCase() in urlParams) { |
|---|
| | 290 | delete allParams[key]; |
|---|
| | 291 | } |
|---|
| | 292 | } |
|---|
| | 293 | var paramsString = OpenLayers.Util.getParameterString(allParams); |
|---|
| | 294 | |
|---|
| | 295 | /* MapGuide needs '+' seperating things like bounds/height/width. |
|---|
| | 296 | Since typically this is URL encoded, we use a slight hack: we |
|---|
| | 297 | depend on the list-like functionality of getParameterString to |
|---|
| | 298 | leave ',' only in the case of list items (since otherwise it is |
|---|
| | 299 | encoded) then do a regular expression replace on the , characters |
|---|
| | 300 | to '+' */ |
|---|
| | 301 | paramsString = paramsString.replace(/,/g, "+"); |
|---|
| | 302 | |
|---|
| | 303 | var tileRowGroup = "" |
|---|
| | 304 | var tileColGroup = ""; |
|---|
| | 305 | |
|---|
| | 306 | if (newParams.tilerow < 0) |
|---|
| | 307 | tileRowGroup = '-'; |
|---|
| | 308 | |
|---|
| | 309 | if (newParams.tilerow == 0 ) |
|---|
| | 310 | tileRowGroup += 0; |
|---|
| | 311 | else |
|---|
| | 312 | tileRowGroup += Math.floor(newParams.tilerow/this.TILE_PARAMS.tileRowsPerFolder) * this.TILE_PARAMS.tileRowsPerFolder ; |
|---|
| | 313 | |
|---|
| | 314 | if (newParams.tilecol < 0) |
|---|
| | 315 | tileColGroup = '-'; |
|---|
| | 316 | |
|---|
| | 317 | if (newParams.tilecol == 0) |
|---|
| | 318 | tileColGroup += 0; |
|---|
| | 319 | else |
|---|
| | 320 | tileColGroup += Math.floor(newParams.tilecol/this.TILE_PARAMS.tileColumnsPerFolder) * this.TILE_PARAMS.tileColumnsPerFolder; |
|---|
| | 321 | |
|---|
| | 322 | var tilePath = '/S' + newParams.scaleindex |
|---|
| | 323 | + '/' + this.params.basemaplayergroupname |
|---|
| | 324 | + '/R' + tileRowGroup |
|---|
| | 325 | + '/C' + tileColGroup |
|---|
| | 326 | + '/' + (newParams.tilerow % this.TILE_PARAMS.tileRowsPerFolder) |
|---|
| | 327 | + '_' + (newParams.tilecol % this.TILE_PARAMS.tileColumnsPerFolder) |
|---|
| | 328 | + '.' + this.TILE_PARAMS.format; |
|---|
| | 329 | // +'?r='+newParams.tilerow+'&c='+newParams.tilecol; |
|---|
| | 330 | |
|---|
| | 331 | requestString +=tilePath; |
|---|
| | 332 | |
|---|
| | 333 | return requestString; |
|---|
| | 334 | }, |
|---|
| | 335 | |
|---|