diff options
| author | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-09-09 23:51:25 +0200 |
|---|---|---|
| committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-09-09 23:51:25 +0200 |
| commit | add49610829534e6d059f53ec8240ef5f2c9fea1 (patch) | |
| tree | 52cefa1f01b8330eead3e5f53bc9300272bffd36 /chimere/static | |
| parent | 8b473eef82deaaaee340d045e3be09263bfbc7bb (diff) | |
| download | Chimère-add49610829534e6d059f53ec8240ef5f2c9fea1.tar.bz2 Chimère-add49610829534e6d059f53ec8240ef5f2c9fea1.zip | |
Manage itinerary in permalink
Diffstat (limited to 'chimere/static')
| -rw-r--r-- | chimere/static/chimere/js/jquery.chimere.js | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/chimere/static/chimere/js/jquery.chimere.js b/chimere/static/chimere/js/jquery.chimere.js index d7da137..68a621e 100644 --- a/chimere/static/chimere/js/jquery.chimere.js +++ b/chimere/static/chimere/js/jquery.chimere.js @@ -67,6 +67,11 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, { lat: null, lon: null, simple: false, + routing_start_lat: null, + routing_start_lon: null, + routing_end_lat: null, + routing_end_lon: null, + routing_steps_lonlat: null, // Provide this function to make a custom click event on the marker on_marker_click: null, // Provide this function to override the feature detail display @@ -155,8 +160,29 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, { // Make specific params params.checked_categories = settings.checked_categories; params.display_submited = settings.display_submited; - if(settings.current_feature){ + if(settings.current_feature) params.current_feature = settings.current_feature.pk; + if (settings.routing_start){ + lonlat = settings.routing_start.lonlat.clone().transform( + EPSG_PROJECTION, EPSG_DISPLAY_PROJECTION); + params.routing_start_lon = lonlat.lon; + params.routing_start_lat = lonlat.lat; + } + if (settings.routing_end){ + lonlat = settings.routing_end.lonlat.clone().transform( + EPSG_PROJECTION, EPSG_DISPLAY_PROJECTION); + params.routing_end_lon = lonlat.lon; + params.routing_end_lat = lonlat.lat; + } + if (settings.routing_steps){ + var steps = []; + for (var i = 0; i < settings.routing_steps.length; i++){ + lonlat = settings.routing_steps[i].lonlat.clone( + ).transform(EPSG_PROJECTION, + EPSG_DISPLAY_PROJECTION); + steps.push([lonlat.lon, lonlat.lat]); + } + params.routing_steps = steps; } return params; } @@ -267,6 +293,27 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, { settings.layerVectors, helpers.featureRouteCreated); } } + if (settings.routing_start_lon && settings.routing_start_lat){ + settings.current_position = new OpenLayers.LonLat( + settings.routing_start_lon, settings.routing_start_lat + ).transform(EPSG_DISPLAY_PROJECTION, EPSG_PROJECTION); + methods.routingFrom(); + } + if (settings.routing_end_lon && settings.routing_end_lat){ + settings.current_position = new OpenLayers.LonLat( + settings.routing_end_lon, settings.routing_end_lat + ).transform(EPSG_DISPLAY_PROJECTION, EPSG_PROJECTION); + methods.routingTo(); + } + if (settings.routing_steps_lonlat){ + for (var i = 0; i < settings.routing_steps_lonlat.length/2; i++) { + lon = settings.routing_steps_lonlat[i*2]; + lat = settings.routing_steps_lonlat[i*2+1]; + settings.current_position = new OpenLayers.LonLat(lon, lat + ).transform(EPSG_DISPLAY_PROJECTION, EPSG_PROJECTION); + methods.routingAddStep(); + } + } }, // end of init activateContextMenu: function(){ @@ -775,6 +822,7 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, { settings.routing_steps = new Array(); settings.current_itinerary_number = 0; settings.current_route_feature = null; + settings.permalink.updateLink(); }, // display a route route: function(){ @@ -806,6 +854,7 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, { } uri += step.lon + '_' + step.lat; } + settings.permalink.updateLink(); $.ajax({url: uri, dataType: "json", success: function (data) { |
