1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
| Geoportal.Viewer.prototype.initialize= function(div, options) {
// create container for viewer
if (!div) {
div= 'geoportalViewerDiv';
}
this.div= OpenLayers.Util.getElement(div);
if(!this.div) {
this.div= OpenLayers.getDoc().createElement("div");
this.div.style.height= "1px";
this.div.style.width= "1px";
//OpenLayers.Console.error(OpenLayers.i18n('div.not.found',{id:div}));
//return;
}
// jQuery :
var ua= navigator.userAgent.toLowerCase();
this.browser= {
version: (ua.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [0,'0'])[1],
safari: /webkit/.test(ua) && !/chrome/.test(ua),
opera: /opera/.test(ua),
msie: /msie/.test(ua) && !/opera/.test(ua),
mozilla: /mozilla/.test(ua) && !/(compatible|webkit)/.test(ua),
chrome: /chrome/.test(ua)
};
options= options || {};
var vlListener= null;
if ((options.eventListeners instanceof Object) && (options.eventListeners["viewerloaded"] instanceof Function)) {
vlListener= options.eventListeners["viewerloaded"];
delete options.eventListeners["viewerloaded"];
}
// set the default options
this._setOptions(options);
// Layout :
var mapDiv= this.loadLayout(options.layoutOptions);
if (!mapDiv) {
OpenLayers.Console.error(OpenLayers.i18n('div.not.found',{id:this.div.id||''}));
}
// Create map
// under Mozilla inserting CSS somewhere else than at the end of the
// head breaks the page ...
// works well under IE8/Safari4beta ...
// first insert OpenLayers CSS at the right place (prevents OL to append it to head) :
var cssAnchor0= '__OpenLayersCss__';
//OpenLayers.Console.log("OpenLayers="+OpenLayers._getScriptLocation());
//OpenLayers.Console.log("Geoportal ="+Geoportal._getScriptLocation());
var oef= Geoportal.Util.loadCSS(OpenLayers._getScriptLocation()+'theme/default/style.css',cssAnchor0,'');
var cssAnchor1= '';
if (oef[1]) { // __OpenLayersCss__ created :
if (OpenLayers.Util.alphaHack()) {
cssAnchor1= '__IE6OpenLayersCss__';
Geoportal.Util.loadCSS(OpenLayers._getScriptLocation()+'theme/default/ie6-style.css',cssAnchor1,'');
}
cssAnchor1= '__GoogleOpenLayersCss__';
Geoportal.Util.loadCSS(OpenLayers._getScriptLocation()+'theme/default/google.css',cssAnchor1,'');
}
this.map= new Geoportal.Map(mapDiv, this.viewerOptions);
this.map.setApplication(this);
// default OL style loaded, let's load Geoportal style :
if (!options.theme) {
this.loadTheme();
} else {
// load user's theme :
this.setTheme(options.theme);
}
// if (this.browser.msie===true) {
// // load cur relatively to the API :
// OpenLayers.Element.addCss('.gpControlSliderBaseHandle{cursor:url('+Geoportal._getScriptLocation()+'theme/geoportal/img/roam.cur),pointer;}');
// OpenLayers.Element.addCss('.gpControlSliderBaseHandleDown{cursor:url('+Geoportal._getScriptLocation()+'theme/geoportal/img/roaming.cur),pointer;}');
// }
if (options.useDefaultBaseLayers!==false) {
this._addTerritoriesBaselayers();
}
if (!this.allowedDisplayProjections) {
this.allowedDisplayProjections= this.viewerOptions.catalogue.getDisplayProjections(this.territory,null,true);
}
if (!this.displayProjection) {
this.displayProjection= this.allowedDisplayProjections[0].clone();
this.getMap().displayProjection= this.displayProjection;
}
if (options.controls==null || options.controls.length==0) {
this.loadControls(options.controlsOptions);
}
this.completeLayout(options.layoutOptions);
this.events= new OpenLayers.Events(this,null,this.EVENT_TYPES,this.fallThrough,{includeXY:false});
if (vlListener) {
this.events.on({"viewerloaded":vlListener});
}
this.unloadDestroy= OpenLayers.Function.bind(this.destroy, this);
OpenLayers.Event.observe(window, 'unload', this.unloadDestroy, false);
// this handler was the first to be executed ... under FF it disables
// all other listening to window.onunload. We remove it and append it
// again at the end of the events queue ...
OpenLayers.Event.stopObserving(window, 'unload', OpenLayers.Event.unloadCache, false);
OpenLayers.Event.observe(window, 'unload', OpenLayers.Event.unloadCache, false);
this.onMapReadyFunc= OpenLayers.Function.bind(function() {
if (this.isMapReady()===true) {
if (this.mapReadyInterval) {
window.clearInterval(this.mapReadyInterval);
this.mapReadyInterval= null;
}
this.events.triggerEvent("viewerloaded", {
'id' :this.id,
'viewer':this
});
}
},this);
this.mapReadyInterval= window.setInterval(this.onMapReadyFunc, 200);
if (!vlListener) {
// this.getMap().setCenter(this.viewerOptions.defaultCenter, this.viewerOptions.defaultZoom);
}
} |
Partager