-
- 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, i;
- var formats = ['KML', 'GPX'];
-
- for (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) {
- continue;
- }
- }
- 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());
-
- 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;
- }
- }.bind(this);
- reader.readAsText(file);
- }.bind(this));
- }