From ee1285e8fa684c35b62dd32854f66515cd62a269 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Sat, 25 Jan 2020 14:41:33 +0100 Subject: map: support multiple polyline groups with different colors --- lib/Travelynx/Controller/Traveling.pm | 11 +++++++++-- templates/_map.html.ep | 23 ++++++++++++++--------- templates/history_map.html.ep | 2 +- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/lib/Travelynx/Controller/Traveling.pm b/lib/Travelynx/Controller/Traveling.pm index 70d701b..198d66e 100755 --- a/lib/Travelynx/Controller/Traveling.pm +++ b/lib/Travelynx/Controller/Traveling.pm @@ -446,7 +446,7 @@ sub map_history { template => 'history_map', with_map => 1, station_coordinates => [], - station_pairs => [], + polyline_groups => [], ); return; } @@ -528,7 +528,14 @@ sub map_history { template => 'history_map', with_map => 1, station_coordinates => \@station_coordinates, - station_pairs => \@station_pairs, + polyline_groups => [ + { + polylines => \@station_pairs, + color => '#673ab7', + opacity => 0.6, + fit_bounds => 1, + } + ] ); } diff --git a/templates/_map.html.ep b/templates/_map.html.ep index 16718fb..119e29f 100644 --- a/templates/_map.html.ep +++ b/templates/_map.html.ep @@ -25,16 +25,21 @@ var stations = [ % } ]; -var routes = [ -% for my $pair ( @{stash('station_pairs') // [] } ) { -[[<%= $pair->[0][0] %>,<%= $pair->[0][1] %>],[<%= $pair->[1][0] %>,<%= $pair->[1][1] %>]], +var routes = []; +var pl; +% for my $line_group ( @{ stash('polyline_groups') // [] } ) { + routes = [ + % for my $pair ( @{$line_group->{polylines} // []} ) { + [[<%= $pair->[0][0] %>,<%= $pair->[0][1] %>],[<%= $pair->[1][0] %>,<%= $pair->[1][1] %>]], + % } + ]; + pl = L.polyline(routes, {color: '<%= $line_group->{color} %>', opacity: <%= $line_group->{opacity} %>}).addTo(map); + % if ($line_group->{fit_bounds}) { + if (routes.length) { + map.fitBounds(pl.getBounds()); + } + % } % } -]; - -var pl = L.polyline(routes, {color: '#673ab7', opacity: 0.6}).addTo(map); -if (routes.length) { - map.fitBounds(pl.getBounds()); -} for (var station_id in stations) { L.circle(stations[station_id][0], { diff --git a/templates/history_map.html.ep b/templates/history_map.html.ep index 7bda06b..747912f 100644 --- a/templates/history_map.html.ep +++ b/templates/history_map.html.ep @@ -9,7 +9,7 @@ -%= include '_map', station_coordinates => $station_coordinates, station_pairs => $station_pairs +%= include '_map', station_coordinates => $station_coordinates, polyline_groups => $polyline_groups %= form_for '/history/map' => (method => 'POST') => begin %= csrf_field -- cgit v1.2.3