diff options
| author | Daniel Friesel <derf@finalrewind.org> | 2020-02-07 23:19:01 +0100 | 
|---|---|---|
| committer | Daniel Friesel <derf@finalrewind.org> | 2020-02-07 23:19:01 +0100 | 
| commit | 3ddd1a1cf47feb7c037db60555b4287e5a684a08 (patch) | |
| tree | 10be5fae8d14cf7daa466d852eafae3d73e2f2d7 /lib/Travelynx | |
| parent | c2e0f377be954b70c1c095e441871231c603a34d (diff) | |
Improve map performance by passing actual polylines for train routes1.14.7
Diffstat (limited to 'lib/Travelynx')
| -rwxr-xr-x | lib/Travelynx/Controller/Traveling.pm | 21 | 
1 files changed, 9 insertions, 12 deletions
| diff --git a/lib/Travelynx/Controller/Traveling.pm b/lib/Travelynx/Controller/Traveling.pm index b08864e..7a9ab9e 100755 --- a/lib/Travelynx/Controller/Traveling.pm +++ b/lib/Travelynx/Controller/Traveling.pm @@ -3,6 +3,7 @@ use Mojo::Base 'Mojolicious::Controller';  use DateTime;  use DateTime::Format::Strptime; +use JSON;  use List::Util qw(uniq min max);  use List::UtilsBy qw(uniq_by);  use List::MoreUtils qw(first_index); @@ -459,6 +460,8 @@ sub map_history {  		return;  	} +	my $json = JSON->new->utf8; +  	my $include_manual = $self->param('include_manual') ? 1 : 0;  	my $first_departure = $journeys[-1]->{rt_departure}; @@ -471,7 +474,7 @@ sub map_history {  	  grep { exists $location->{$_} } @stations;  	my @station_pairs; -	my @coord_pairs; +	my @polylines;  	my %seen;  	my @skipped_journeys; @@ -516,17 +519,11 @@ sub map_history {  		$seen{$key} = 1;  		@polyline = @polyline[ $from_index .. $to_index ]; -		my $prev_coord = shift @polyline; +		my @polyline_coords;  		for my $coord (@polyline) { -			push( -				@coord_pairs, -				[ -					[ $prev_coord->[1], $prev_coord->[0] ], -					[ $coord->[1],      $coord->[0] ] -				] -			); -			$prev_coord = $coord; +			push( @polyline_coords, [ $coord->[1], $coord->[0] ] );  		} +		push( @polylines, [@polyline_coords] );  	}  	for my $journey (@beeline_journeys) { @@ -620,12 +617,12 @@ sub map_history {  		station_coordinates => \@station_coordinates,  		polyline_groups     => [  			{ -				polylines => \@station_pairs, +				polylines => $json->encode( \@station_pairs ),  				color     => '#673ab7',  				opacity   => $with_polyline ? 0.4 : 0.6,  			},  			{ -				polylines => \@coord_pairs, +				polylines => $json->encode( \@polylines ),  				color     => '#673ab7',  				opacity   => 0.8,  			} | 
