diff options
| author | etienne <etienne@9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864> | 2009-01-17 17:24:28 +0000 | 
|---|---|---|
| committer | etienne <etienne@9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864> | 2009-01-17 17:24:28 +0000 | 
| commit | ae0b72b845ac0100aa3f42095f1f31631f787752 (patch) | |
| tree | 64df56a5d8b8257a01a42060c36cfc2f93810e26 | |
| parent | 79a035bc75ea3c30a1cf129b3f94b8dd9475e8ad (diff) | |
| download | Chimère-ae0b72b845ac0100aa3f42095f1f31631f787752.tar.bz2 Chimère-ae0b72b845ac0100aa3f42095f1f31631f787752.zip | |
Forgotten js file...
git-svn-id: http://www.peacefrogs.net/svn/chimere/trunk@18 9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864
| -rw-r--r-- | static/edit_route_map.js | 114 | 
1 files changed, 114 insertions, 0 deletions
| diff --git a/static/edit_route_map.js b/static/edit_route_map.js new file mode 100644 index 0000000..f1a466f --- /dev/null +++ b/static/edit_route_map.js @@ -0,0 +1,114 @@ +/* Copyright (C) 2008  Étienne Loks  <etienne.loks_AT_peacefrogsDOTnet> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program.  If not, see <http://www.gnu.org/licenses/>. + +See the file COPYING for details. +*/ + +/* map edit */ + +var map; +var currentControl; + +/* availaible map layers */ +var layerMapnik = new OpenLayers.Layer.OSM.Mapnik('Mapnik'); +var vectors = new OpenLayers.Layer.Vector("Vector Layer"); + +vectors.events.on({ + "featuremodified": updateForm, + "featureadded": featureCreated +}); + +var currentFeature; +function featureCreated(event) { +    /* toggle to edition mode */ +    pathCreate.deactivate(); +    currentControl = pathModify; +    var help_route_create = document.getElementById('help-route-create'); +    if (help_route_create){ +        help_route_create.style.display = 'None'; +    } +    document.getElementById('help-route-modify').style.display = 'block'; +    pathModify.activate(); +    updateForm(event); +    selectControl.select(event.feature); +} + +function initFeature(json_geometry){ +    var json = new OpenLayers.Format.JSON(); +    var polyline = json.read(json_geometry); +    var point_array = new Array(); +    for (i=0; i<polyline.coordinates.length; i++){ +        var point = new OpenLayers.Geometry.Point(polyline.coordinates[i][0], +                                                  polyline.coordinates[i][1]); +        point_array.push(point); +    } +    var linestring = new OpenLayers.Geometry.LineString(point_array); +    currentFeature = new OpenLayers.Feature.Vector(); +    currentFeature.geometry = linestring; +    vectors.addFeatures([currentFeature]); +    currentControl = pathModify; +} + +function updateForm(event) { +    /* update the form */ +    currentFeature = event.feature; +    document.getElementById('id_route').value = currentFeature.geometry; +} + + +/* path control */ +var pathCreate = new OpenLayers.Control.DrawFeature(vectors, +                                            OpenLayers.Handler.Path); +var currentControl = pathCreate; + +var pathModify = new OpenLayers.Control.ModifyFeature(vectors, +                {clickout:false, toggle:false}); +var selectControl = new OpenLayers.Control.SelectFeature(vectors); + +/* main initialisation function */ +function init(){ +    map = new OpenLayers.Map('map_edit', { +        controls:[new OpenLayers.Control.Navigation(), +                  new OpenLayers.Control.PanZoomBar(), +                  new OpenLayers.Control.Attribution(), +                  pathCreate, +                  pathModify], +        maxResolution: 156543.0399, +        units: 'm', +        projection: epsg_projection, +        displayProjection: epsg_display_projection, +    } ); +    vectors.setOpacity(0.5); +    map.addLayers([layerMapnik, vectors]); +    /* zoom to the appropriate extent */ +    if (!zoomToCurrentExtent(map)){ +        map.setCenter(centerLonLat, 12); +    } +} + +function toggleDrawOn() { +    currentControl.activate(); +    document.getElementById('draw-toggle-off').style.display = 'None'; +    document.getElementById('draw-toggle-on').style.display = 'block'; +    if (currentFeature){ +        selectControl.select(currentFeature); +    } +} + +function toggleDrawOff() { +    currentControl.deactivate(); +    document.getElementById('draw-toggle-on').style.display = 'None'; +    document.getElementById('draw-toggle-off').style.display = 'block'; +} | 
