diff options
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 |
commit | 1242868c7eb1cd9da6f4001e2e98d4369d24ba15 (patch) | |
tree | 6cd04e9cdac13118d65d2667053e032486dd68db | |
parent | fe0a771e75be853d2553bfdd94e2fd11a73ed481 (diff) | |
download | Chimè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.js | 30 |
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){ |