summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@proxience.com>2015-02-27 01:46:40 +0100
committerÉtienne Loks <etienne.loks@proxience.com>2015-02-27 01:46:40 +0100
commit1242868c7eb1cd9da6f4001e2e98d4369d24ba15 (patch)
tree6cd04e9cdac13118d65d2667053e032486dd68db
parentfe0a771e75be853d2553bfdd94e2fd11a73ed481 (diff)
downloadChimère-1242868c7eb1cd9da6f4001e2e98d4369d24ba15.tar.bz2
Chimère-1242868c7eb1cd9da6f4001e2e98d4369d24ba15.zip
JS: manage the saving of route with many steps
-rw-r--r--chimere/static/chimere/js/jquery.chimere.js30
1 files changed, 22 insertions, 8 deletions
diff --git a/chimere/static/chimere/js/jquery.chimere.js b/chimere/static/chimere/js/jquery.chimere.js
index 2e147c8..c9f02af 100644
--- a/chimere/static/chimere/js/jquery.chimere.js
+++ b/chimere/static/chimere/js/jquery.chimere.js
@@ -101,7 +101,7 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, {
current_control: null, // To store the current control
current_popup: null, // To store the current POI popup displayed
current_category: null, // To store the current category clicked in list
- current_route_feature: null, // To store the current route find by routing
+ current_routes_features: [], // To store the current routes find by routing
itinerary_step_number:0, // current step number
icon_offset: new OpenLayers.Pixel(0, 0),
edition: false, // edition mode
@@ -1193,7 +1193,7 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, {
settings.routing_end = null;
settings.routing_steps = new Array();
settings.current_itinerary_number = 0;
- settings.current_route_feature = null;
+ settings.current_routes_features = [];
settings.permalink.updateLink();
},
// display a route
@@ -1235,11 +1235,12 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, {
methods.displayMessage(routing_fail_message);
return;
}
+ settings.current_routes_features = [];
for (var i = 0; i < data.features.length; i++) {
var feat = data.features[i];
if(feat.type == 'LineString'){
- settings.current_route_feature =
- methods.putRoute(feat);
+ settings.current_routes_features.push(
+ methods.putRoute(feat));
} else {
var lonlat = new OpenLayers.LonLat(
feat.geometry.coordinates[0],
@@ -1492,12 +1493,25 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, {
},
updateRoutingInput: function(){
- if (!settings.current_route_feature) {
+ if (!settings.current_routes_features) {
return;
}
- var current_geo = settings.current_route_feature.geometry.clone();
- current_geo.transform(EPSG_PROJECTION, EPSG_DISPLAY_PROJECTION);
- jQuery('#id_route').val(current_geo);
+ var wkt = new OpenLayers.Format.WKT();
+ var point_array = [];
+ // not very effective...
+ for (idx in settings.current_routes_features){
+ var c_geo = settings.current_routes_features[idx].geometry.clone();
+ c_geo = c_geo.transform(EPSG_PROJECTION,
+ EPSG_DISPLAY_PROJECTION);
+ var vertices = c_geo.getVertices();
+ for (idx_pt in vertices){
+ var point = vertices[idx_pt];
+ point = wkt.read(String(point));
+ point_array.push(point.geometry);
+ }
+ }
+ var linestring = new OpenLayers.Geometry.LineString(point_array);
+ jQuery('#id_route').val(String(linestring));
},
activateCurrentControl: function(){
if (settings.current_control){