diff options
| author | Robert | 2017-05-16 12:29:24 +0200 |
|---|---|---|
| committer | Robert | 2017-05-16 12:29:24 +0200 |
| commit | cf2e94285df55f2f58549994f770da845b28916a (patch) | |
| tree | 371bace6047f761849adc2c82860dece67c44799 | |
| parent | 3f034a0ca9709e10431bbcdb60a79b605d9bc4e7 (diff) | |
| parent | e23c621af8b25dbdacc9e8ff6f2bd3c31bad63b8 (diff) | |
| download | chouette-core-cf2e94285df55f2f58549994f770da845b28916a.tar.bz2 | |
Merge branch 'master' of github.com:af83/stif-boiv
| -rw-r--r-- | app/assets/javascripts/es6_browserified/itineraries/show.js | 100 | ||||
| -rw-r--r-- | app/views/routes/show.html.slim | 4 |
2 files changed, 104 insertions, 0 deletions
diff --git a/app/assets/javascripts/es6_browserified/itineraries/show.js b/app/assets/javascripts/es6_browserified/itineraries/show.js new file mode 100644 index 000000000..ca6606ef1 --- /dev/null +++ b/app/assets/javascripts/es6_browserified/itineraries/show.js @@ -0,0 +1,100 @@ +route = JSON.parse(decodeURIComponent(route)) +const geoColPts = [] +const geoColLns= [] +const geoColEdges = [ + new ol.Feature({ + geometry: new ol.geom.Point(ol.proj.fromLonLat([parseFloat(route[0].longitude), parseFloat(route[0].latitude)])) + }), + new ol.Feature({ + geometry: new ol.geom.Point(ol.proj.fromLonLat([parseFloat(route[route.length - 1].longitude), parseFloat(route[route.length - 1].latitude)])) + }) +] +route.forEach(function(stop, i){ + if (i < route.length - 1){ + geoColLns.push(new ol.Feature({ + geometry: new ol.geom.LineString([ + ol.proj.fromLonLat([parseFloat(route[i].longitude), parseFloat(route[i].latitude)]), + ol.proj.fromLonLat([parseFloat(route[i+1].longitude), parseFloat(route[i+1].latitude)]) + ]) + })) + } + geoColPts.push(new ol.Feature({ + geometry: new ol.geom.Point(ol.proj.fromLonLat([parseFloat(stop.longitude), parseFloat(stop.latitude)])) + }) + ) +}) +var edgeStyles = new ol.style.Style({ + image: new ol.style.Circle(({ + radius: 5, + stroke: new ol.style.Stroke({ + color: '#ff0000', + width: 2 + }), + fill: new ol.style.Fill({ + color: '#ffffff', + width: 2 + }) + })) +}) +var defaultStyles = new ol.style.Style({ + image: new ol.style.Circle(({ + radius: 5, + stroke: new ol.style.Stroke({ + color: '#004d87', + width: 2 + }), + fill: new ol.style.Fill({ + color: '#ffffff', + width: 2 + }) + })) +}) +var lineStyle = new ol.style.Style({ + stroke: new ol.style.Stroke({ + color: '#0000ff', + width: 4 + }) +}) + +var vectorPtsLayer = new ol.layer.Vector({ + source: new ol.source.Vector({ + features: geoColPts + }), + style: defaultStyles, + zIndex: 2 +}) +var vectorEdgesLayer = new ol.layer.Vector({ + source: new ol.source.Vector({ + features: geoColEdges + }), + style: edgeStyles, + zIndex: 3 +}) +var vectorLnsLayer = new ol.layer.Vector({ + source: new ol.source.Vector({ + features: geoColLns + }), + style: [lineStyle], + zIndex: 1 +}) + +var map = new ol.Map({ + target: 'route_map', + layers: [ + new ol.layer.Tile({ + source: new ol.source.OSM() + }), + vectorPtsLayer, + vectorEdgesLayer, + vectorLnsLayer + ], + controls: [ new ol.control.ScaleLine(), new ol.control.Zoom(), new ol.control.ZoomSlider() ], + interactions: ol.interaction.defaults({ + zoom: true + }), + view: new ol.View({ + center: ol.proj.fromLonLat([parseFloat(route[0].longitude), parseFloat(route[0].latitude)]), + zoom: 10 + }) +}); + diff --git a/app/views/routes/show.html.slim b/app/views/routes/show.html.slim index 7ab628690..d779a8648 100644 --- a/app/views/routes/show.html.slim +++ b/app/views/routes/show.html.slim @@ -33,6 +33,7 @@ .row .col-lg-12 - if @route_sp.any? + #route_map.map = table_builder @route_sp, { 'ID Reflex' => Proc.new {|s| s.try(:stop_area).try(:user_objectid)}, :name => Proc.new {|s| s.try(:stop_area).try(:name)}, @@ -48,3 +49,6 @@ - else = replacement_msg t('stop_areas.search_no_results') += javascript_tag do + | window.route = "#{URI.escape(route_json_for_edit(@route))}" += javascript_include_tag 'es6_browserified/itineraries/show.js' |
