map: support multiple polyline groups with different colors

This commit is contained in:
Daniel Friesel 2020-01-25 14:41:33 +01:00
parent 8157f38854
commit ee1285e8fa
3 changed files with 24 additions and 12 deletions

View file

@ -446,7 +446,7 @@ sub map_history {
template => 'history_map', template => 'history_map',
with_map => 1, with_map => 1,
station_coordinates => [], station_coordinates => [],
station_pairs => [], polyline_groups => [],
); );
return; return;
} }
@ -528,7 +528,14 @@ sub map_history {
template => 'history_map', template => 'history_map',
with_map => 1, with_map => 1,
station_coordinates => \@station_coordinates, station_coordinates => \@station_coordinates,
station_pairs => \@station_pairs, polyline_groups => [
{
polylines => \@station_pairs,
color => '#673ab7',
opacity => 0.6,
fit_bounds => 1,
}
]
); );
} }

View file

@ -25,16 +25,21 @@ var stations = [
% } % }
]; ];
var routes = [ var routes = [];
% for my $pair ( @{stash('station_pairs') // [] } ) { var pl;
[[<%= $pair->[0][0] %>,<%= $pair->[0][1] %>],[<%= $pair->[1][0] %>,<%= $pair->[1][1] %>]], % 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) { for (var station_id in stations) {
L.circle(stations[station_id][0], { L.circle(stations[station_id][0], {

View file

@ -9,7 +9,7 @@
</div> </div>
</div> </div>
%= 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 %= form_for '/history/map' => (method => 'POST') => begin
%= csrf_field %= csrf_field