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
| onClick: function(element,evt) {
Geoportal.Control.SaveLayer.prototype.onClick(element,evt) {
// sauvegarder les objets :
var fscopie= [];
for (var i= 0, l= this.layer.features.length; i<l; i++) {
fscopie.push(this.layer.features[i].clone());
}
// changer les coordonnées (on garde deux chiffres après la virgule) :
for (var i= 0, l= this.layer.features.length; i<l; i++) {
this.layer.features[i].geometry.x= this.layer.features[i].geometry.x).toFixed(2);
this.layer.features[i].geometry.y= this.layer.features[i].geometry.y).toFixed(2);
}
// recopier le code de onClick
OpenLayers.Event.stop(evt? evt : window.event);
if (element.id.match(/^(format|proj|pretty)/) && OpenLayers.String.contains(element.id,this.id)) {
if (!element.hasFocus) {
var e= OpenLayers.Util.getElement('format' + this.id);
if (e && element.id!=e.id && e.hasFocus) {
Geoportal.Control.Form.focusOff(e);
}
e= OpenLayers.Util.getElement('proj' + this.id);
if (e && element.id!=e.id && e.hasFocus) {
Geoportal.Control.Form.focusOff(e);
}
e= OpenLayers.Util.getElement('pretty' + this.id);
if (e && element.id!=e.id && e.hasFocus) {
Geoportal.Control.Form.focusOff(e);
}
Geoportal.Control.Form.focusOn(element);
}
return false;
}
if (element.id.match(/^save/)) {
element= OpenLayers.Util.getElement('format' + this.id);
var fmt= OpenLayers.String.trim(element.options[element.selectedIndex].value);
element.options[0].selected= true;
if (fmt=='') { return false; }
element= OpenLayers.Util.getElement('proj' + this.id);
var prj= OpenLayers.String.trim(element.options[element.selectedIndex].value);
element.options[0].selected= true;
element= OpenLayers.Util.getElement('pretty' + this.id);
var prt= element.checked;
element.checked= false;
var opts= OpenLayers.Util.extend({},this.supportedFormats[fmt].options);
OpenLayers.Util.applyDefaults(opts,{
internalProjection: this.map.getProjection().clone(),
externalProjection: new OpenLayers.Projection(prj)
});
var fw= new this.supportedFormats[fmt].formatClass(opts);
var str= fw.write(this.layer.features, prt);
str= this.showPretty(str, fmt, prt);
if (fmt instanceof OpenLayers.Format.XML) {
str= '<?xml version="1.0" encoding="UTF-8"?>' + (prt? '\n':'') + str;
}
element= OpenLayers.Util.getElement('CT' + this.id);
element.value= this.supportedFormats[fmt].mime;
element= OpenLayers.Util.getElement('FN' + this.id);
element.value= this.layer.name+'.'+fmt;
element= OpenLayers.Util.getElement('DT' + this.id);
element.value= str;
element= OpenLayers.Util.getElement('__savelayer__' + this.id);
element.submit();
}
this.closeForm();
return false;
// remettre les objets originaux
this.layer.features= dscopie;
}, |
Partager