summaryrefslogtreecommitdiff
path: root/static/edit_route_map.js
diff options
context:
space:
mode:
authoretienne <etienne@9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864>2009-01-17 17:24:28 +0000
committeretienne <etienne@9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864>2009-01-17 17:24:28 +0000
commitae0b72b845ac0100aa3f42095f1f31631f787752 (patch)
tree64df56a5d8b8257a01a42060c36cfc2f93810e26 /static/edit_route_map.js
parent79a035bc75ea3c30a1cf129b3f94b8dd9475e8ad (diff)
downloadChimè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
Diffstat (limited to 'static/edit_route_map.js')
-rw-r--r--static/edit_route_map.js114
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';
+}