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 120 121 122 123 124 125 126 127 128 129 130 131 132
|
function omo(evt) {
if (!evt || !evt.element) { return; }
if (this.enhanced===true) { return; }
var div= evt.element;
this.enhanced= true;
var bgi= OpenLayers.Element.getStyle(div, 'background-image');
div.style.backgroundImage= 'none';
var img= div.ownerDocument.createElement('img');
img.src= bgi.replace(/^\s*url\("?/,'').replace(/"?\)\s*$/,'');
img.width= 2*this.w;
img.height= 2*this.h;
img.style.top= (-this.w/2)+"px";
img.style.left= (-this.h/2)+"px";
img.style.position= "relative";
this.mouseEvents.un({
'mouseover': omo
});
div.appendChild(img);
OpenLayers.Event.stop(evt);
}
function omucl(obj, div) {
div.style.backgroundImage= "";
if (div.childNodes.length>0) {
div.removeChild(div.childNodes[0]);
}
obj.enhanced= false;
}
function omu(evt) {
if (!evt || !evt.element) { return; }
var div= evt.element;
if (this.enhanced!==true) { return; }
if (!((this.x<=evt.clientX && evt.clientX<this.x+this.w) &&
(this.y<=evt.clientY && evt.clientY<this.y+this.h))) {
omucl(this, div);
this.mouseEvents.on({
'mouseover': omo
});
}
OpenLayers.Event.stop(evt);
}
function _addEnhanceEffectOnControl(control) {
var pfDestroy= control.destroy;
control.destroy= function() {
if (this.enhance) {
if (this.enhance.mouseEvents) {
this.enhance.mouseEvents.destroy();
this.enhance.mouseEvents= null;
}
}
pfDestroy.apply(this,arguments);
};
var p= OpenLayers.Util.pagePosition(control.panel_div);
control.enhance= {};
control.enhance.mouseEvents= new OpenLayers.Events(control.enhance, control.panel_div, null, true);
control.enhance.w= parseInt(OpenLayers.Element.getStyle(control.panel_div, 'width'));
control.enhance.h= parseInt(OpenLayers.Element.getStyle(control.panel_div, 'height'));
control.enhance.x= p[0];
control.enhance.y= p[1];
control.enhance.mouseEvents.on({
'mouseover': omo,
'mouseout' : omu
});
}
function _addEnhanceEffect(panel) {
var pfOnClick= panel.onClick;
panel.onClick= function(ctrl, evt) {
if (ctrl.enhance) {
omucl(ctrl.enhance, ctrl.panel_div);
}
pfOnClick.apply(panel,arguments);
if (ctrl.enhance) {
ctrl.enhance.mouseEvents.on({
'mouseover': omo
});
}
};
for (var i= 0, l= panel.controls.length; i<l; i++) {
var cntrl= panel.controls[i];
OpenLayers.Event.stopObserving(
cntrl.panel_div,
"click",
OpenLayers.Function.bind(pfOnClick, panel, cntrl)
);
_addEnhanceEffectOnControl(cntrl);
OpenLayers.Event.observe(
cntrl.panel_div,
"click",
OpenLayers.Function.bind(panel.onClick, panel, cntrl)
);
}
}
function initGeoportalMap() {
if (__Geoportal$timer) {
window.clearTimeout(__Geoportal$timer);
__Geoportal$timer= null;
}
if (typeof(OpenLayers)=='undefined' ||
typeof(Geoportal)=='undefined' ||
typeof(Geoportal.Viewer)=='undefined') {
__Geoportal$timer= window.setTimeout("initGeoportalMap();", 100);
return;
}
if (!viewer) {
OpenLayers.Lang.setCode('fr');
geoportalLoadviewer("GeoportalMapDiv", "normal", "FXX");
if (viewer) {
viewer.addGeoportalLayers(
['ORTHOIMAGERY.ORTHOPHOTOS:WMSC', 'GEOGRAPHICALGRIDSYSTEMS.MAPS:WMSC'],
{
'GEOGRAPHICALGRIDSYSTEMS.MAPS:WMSC': {visibility:false},
global:{
visibility:true
}
});
viewer.getMap().setCenter(viewer.viewerOptions.defaultCenter,viewer.viewerOptions.defaultZoom);
}
}
if (viewer) {
if (!viewer.isMapReady()) {
__Geoportal$timer= window.setTimeout("initGeoportalMap();", 100);
return;
}
var nv= viewer.getMap().getControlsByClass('Geoportal.Control.NavToolbar')[0];
_addEnhanceEffect(nv);
}
} |
Partager