X-Git-Url: https://dev.renevier.net/?a=blobdiff_plain;f=public%2Fjs%2Fsyj.js;h=de3333f5c41d0028b60313604ea9ff0582bfaebc;hb=ab004bfb8716d3d3a5def0404447a1b0236e3e61;hp=8012d996bf203ef74661924aa22d4ea91e644d8e;hpb=0fef3b481173d03eeb7b5bf4ab3b38e2bba12c3a;p=syj.git diff --git a/public/js/syj.js b/public/js/syj.js index 8012d99..de3333f 100644 --- a/public/js/syj.js +++ b/public/js/syj.js @@ -267,7 +267,7 @@ var SYJView = { mode: 'view', init: function() { - var externalGraphic, baseURL, baseLayer, layerOptions, extent, hidemessenger; + var externalGraphic, baseURL, baseLayer, layerOptions, hidemessenger; // is svg context, opera does not resolve links with base element is svg context externalGraphic = styleMap.edit.styles.select.defaultStyle.externalGraphic; @@ -341,15 +341,14 @@ var SYJView = { if (typeof gInitialGeom !== "undefined" && typeof gInitialGeom.data !== "undefined") { this.viewLayer.addFeatures([this.wkt.read(gInitialGeom.data)]); - extent = this.viewLayer.getDataExtent(); // XXX: ie has not guessed height of map main div yet during map // initialisation. Now, it will read it correctly. this.map.updateSize(); + this.map.zoomToExtent(this.viewLayer.getDataExtent()); } else { - extent = new OpenLayers.Bounds(gMaxExtent.minlon, gMaxExtent.minlat, gMaxExtent.maxlon, gMaxExtent.maxlat) - .transform(WGS84, Mercator); + this.initMaPos(gInitialPos); } - this.map.zoomToExtent(extent); + document.observe('simplebox:shown', this.observer.bindAsEventListener(this)); SYJPathLength.update(); @@ -378,10 +377,10 @@ var SYJView = { var results = null; var content = evt.target.result; - var engine; + var engine, i; var formats = ['KML', 'GPX']; - for (var i = 0; i < formats.length; i++) { + for (i = 0; i < formats.length; i++) { engine = new OpenLayers.Format[formats[i]]({ internalProjection: Mercator, externalProjection: WGS84 }); try { results = engine.read(content); @@ -404,7 +403,20 @@ var SYJView = { } this.viewLayer.addFeatures([vector]); this.map.zoomToExtent(this.viewLayer.getDataExtent()); - this.editMode(); + + if ($("edit-btn")) { + $("edit-btn").click(); + } else if ($("create-btn")) { + $("create-btn").click(); + } + + if (this.editControl.handler.realPoints.length < 2) { + SyjSaveUI.disable(); + } else { + SyjSaveUI.enable(); + } + + if (vector.data && vector.data.name) { $("geom_title").value = vector.data.name; } @@ -414,6 +426,27 @@ var SYJView = { } }, + initMaPos: function (aPos) { + var extent = null, center = null, zoom = 0; + + if (aPos.hasOwnProperty('lon') && aPos.hasOwnProperty('lat') && aPos.hasOwnProperty('zoom')) { + center = new OpenLayers.LonLat(parseFloat(aPos.lon), parseFloat(aPos.lat)).transform(WGS84, Mercator); + zoom = parseInt(aPos.zoom); + } else if (aPos.hasOwnProperty('minlon') && aPos.hasOwnProperty('minlat') + && aPos.hasOwnProperty('maxlon') && aPos.hasOwnProperty('maxlat')) { + extent = new OpenLayers.Bounds(aPos.minlon, aPos.minlat, aPos.maxlon, aPos.maxlat) + .transform(WGS84, Mercator); + } else { + extent = new OpenLayers.Bounds(-160, -70, 160, 70).transform(WGS84, Mercator); + } + + if (extent) { + this.map.zoomToExtent(extent); + } else { + this.map.setCenter(center, zoom); + } + }, + observer: function(evt) { if (evt.eventName === "simplebox:shown" && evt.memo.element !== $("termsofusearea")) { this.messenger.hide(); @@ -1126,7 +1159,8 @@ var Nominatim = (function() { }; }; - for (var i = 0; i < transport.responseJSON.length; i++) { + var i; + for (i = 0; i < transport.responseJSON.length; i++) { var item = transport.responseJSON[i]; if (item.display_name && item.boundingbox && item.boundingbox.length === 4) { var li = new Element("li");