summaryrefslogtreecommitdiff
path: root/chimere/static/edit_route_map.js
diff options
context:
space:
mode:
Diffstat (limited to 'chimere/static/edit_route_map.js')
-rw-r--r--chimere/static/edit_route_map.js121
1 files changed, 121 insertions, 0 deletions
diff --git a/chimere/static/edit_route_map.js b/chimere/static/edit_route_map.js
new file mode 100644
index 0000000..dcf7c84
--- /dev/null
+++ b/chimere/static/edit_route_map.js
@@ -0,0 +1,121 @@
+/* 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 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);
+ pathModify.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;
+ /*zoom to the route*/
+ var bounds = vectors.getDataExtent();
+ if (bounds) map.zoomToExtent(bounds);
+}
+
+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});
+
+/* main initialisation function */
+function init(){
+ var options = {
+ controls:[new OpenLayers.Control.Navigation(),
+ new OpenLayers.Control.PanPanel(),
+ new OpenLayers.Control.ZoomPanel(),
+ new OpenLayers.Control.Attribution(),
+ pathCreate,
+ pathModify],
+ maxResolution: 156543.0399,
+ units: 'm',
+ projection: epsg_projection,
+ displayProjection: epsg_display_projection,
+ };
+ if (restricted_extent){options['restrictedExtent'] = restricted_extent;}
+ map = new OpenLayers.Map('map_edit', options);
+
+ vectors.setOpacity(0.5);
+ map.addLayers([map_layer, 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){
+ pathModify.selectControl.select(currentFeature);
+ }
+}
+
+function toggleDrawOff() {
+ currentControl.deactivate();
+ document.getElementById('draw-toggle-on').style.display = 'None';
+ document.getElementById('draw-toggle-off').style.display = 'block';
+}