X-Git-Url: https://dev.renevier.net/?a=blobdiff_plain;f=public%2Fjs%2Fsyj.js;h=50184b2a6974fe0c97dc8f43db21a78d609166d0;hb=c57706da408cacae1008851edb650ac33865bd22;hp=e33ea4e306cfef58018c21641c4a1b98e9595748;hpb=ad8cda652fe828281e96e5349cab640bcd29cbf4;p=syj.git diff --git a/public/js/syj.js b/public/js/syj.js index e33ea4e..50184b2 100644 --- a/public/js/syj.js +++ b/public/js/syj.js @@ -352,6 +352,66 @@ var SYJView = { this.map.zoomToExtent(extent); document.observe('simplebox:shown', this.observer.bindAsEventListener(this)); SYJPathLength.update(); + + if (window.FileList && window.FileReader) { + $("map").observe("dragenter", function(evt) { evt.stop();}); + $("map").observe("dragover", function(evt) { evt.stop();}); + $("map").observe("drop", function(evt) { + evt.stop(); + if (this.mode !== "view" || this.viewLayer.features.length) { + return; + } + if (!evt.dataTransfer.files.length) { + return; + } + var file = evt.dataTransfer.files[0]; + var reader = new FileReader(); + var readerror = function() { + this.messenger.setMessage(SyjStrings.dragFileError, "warn"); + }.bind(this); + reader.onload = function(evt) { + if (evt.error) { + readerror(); + return; + } + + var results = null; + var content = evt.target.result; + + var engine; + var formats = ['KML', 'GPX']; + + for (var i = 0; i < formats.length; i++) { + engine = new OpenLayers.Format[formats[i]]({ internalProjection: Mercator, externalProjection: WGS84 }); + try { + results = engine.read(content); + } catch(e) { + } + if (results || results.length) { + break; + } + } + if (!results || !results.length) { + readerror(); + return; + } + + + var vector = results[0]; + if (vector.geometry.CLASS_NAME !== "OpenLayers.Geometry.LineString") { + readerror(); + return; + } + this.viewLayer.addFeatures([vector]); + this.map.zoomToExtent(this.viewLayer.getDataExtent()); + this.editMode(); + if (vector.data && vector.data.name) { + $("geom_title").value = vector.data.name; + } + }.bind(this); + reader.readAsText(file); + }.bind(this)); + } }, observer: function(evt) { @@ -471,28 +531,6 @@ var SYJView = { styles = this.editControl.handler.layerOptions.styleMap.styles; styles.select = styles.select_for_canvas; } - new CloseBtn($("geomform"), { - style : { - marginRight: "-40px", - marginTop: "-20px" - }, - callback: function(form) { - this.viewMode(); - this.mode = 'view'; - SYJDataUi.viewmode(); - this.messenger.hide(); - - if (this.unsavedRoute && typeof this.unsavedRoute.features !== "undefined") { - this.viewLayer.addFeatures(this.unsavedRoute.features); - } - if (this.unsavedRoute && typeof this.unsavedRoute.title !== "undefined") { - $("geom_title").value = this.unsavedRoute.title; - } else { - $("geom_title").value = ""; - } - this.unsavedRoute = null; - }.bind(this) - }); }, saveSuccess: function(transport) { @@ -1046,7 +1084,7 @@ var Nominatim = (function() { center = bounds.getCenterLonLat().wrapDateLine(maxExtent); } this.setCenter(center, this.getZoomForExtent(bounds), false, true); - } + }; var success = function(transport) { $("nominatim-throbber").hide();