From 240976e8056624ee93f858829b75e33993561c24 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Wed, 8 Jan 2020 21:27:32 +0100 Subject: show station location in map --- lib/DBInfoscreen/Controller/Map.pm | 26 +++++++++++++++++++++ lib/DBInfoscreen/Controller/Stationboard.pm | 1 + .../static/leaflet/images/marker-icon-2x-gold.png | Bin 0 -> 4274 bytes .../static/leaflet/images/marker-icon-2x-green.png | Bin 0 -> 4203 bytes templates/_train_details.html.ep | 2 +- templates/route_map.html.ep | 25 +++++++++++++++++++- 6 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 public/static/leaflet/images/marker-icon-2x-gold.png create mode 100644 public/static/leaflet/images/marker-icon-2x-green.png diff --git a/lib/DBInfoscreen/Controller/Map.pm b/lib/DBInfoscreen/Controller/Map.pm index 70b2644..6ab2c32 100644 --- a/lib/DBInfoscreen/Controller/Map.pm +++ b/lib/DBInfoscreen/Controller/Map.pm @@ -68,6 +68,9 @@ sub route { my $trip_id = $self->stash('tripid'); my $line_no = $self->stash('lineno'); + my $from_name = $self->param('from'); + my $to_name = $self->param('to'); + $self->render_later; $self->get_hafas_polyline_p( $trip_id, $line_no )->then( @@ -102,6 +105,29 @@ sub route { my @stop_lines = ( $stop->{stop}{name} ); my ( $platform, $arr, $dep, $arr_delay, $dep_delay ); + if ( $from_name and $stop->{stop}{name} eq $from_name ) { + push( + @markers, + { + lon => $stop->{stop}{location}{longitude}, + lat => $stop->{stop}{location}{latitude}, + title => $stop->{stop}{name}, + icon => 'greenIcon', + } + ); + } + if ( $to_name and $stop->{stop}{name} eq $to_name ) { + push( + @markers, + { + lon => $stop->{stop}{location}{longitude}, + lat => $stop->{stop}{location}{latitude}, + title => $stop->{stop}{name}, + icon => 'goldIcon', + } + ); + } + if ( $stop->{arrival} and $arr = $strp->parse_datetime( $stop->{arrival} ) ) { diff --git a/lib/DBInfoscreen/Controller/Stationboard.pm b/lib/DBInfoscreen/Controller/Stationboard.pm index 797cde9..59ee48d 100644 --- a/lib/DBInfoscreen/Controller/Stationboard.pm +++ b/lib/DBInfoscreen/Controller/Stationboard.pm @@ -1273,6 +1273,7 @@ sub handle_request { linetype => $linetype, icetype => $self->app->ice_type_map->{ $departure->{train_no} }, dt_now => DateTime->now( time_zone => 'Europe/Berlin' ), + station_name => $data->{station_name} // $station, ); } else { diff --git a/public/static/leaflet/images/marker-icon-2x-gold.png b/public/static/leaflet/images/marker-icon-2x-gold.png new file mode 100644 index 0000000..6992d65 Binary files /dev/null and b/public/static/leaflet/images/marker-icon-2x-gold.png differ diff --git a/public/static/leaflet/images/marker-icon-2x-green.png b/public/static/leaflet/images/marker-icon-2x-green.png new file mode 100644 index 0000000..c359abb Binary files /dev/null and b/public/static/leaflet/images/marker-icon-2x-green.png differ diff --git a/templates/_train_details.html.ep b/templates/_train_details.html.ep index 0ace74c..4a4738d 100644 --- a/templates/_train_details.html.ep +++ b/templates/_train_details.html.ep @@ -85,7 +85,7 @@ % } % if ($departure->{trip_id}) {
- Karte + Karte
% } diff --git a/templates/route_map.html.ep b/templates/route_map.html.ep index 6fc4201..8cdf630 100644 --- a/templates/route_map.html.ep +++ b/templates/route_map.html.ep @@ -98,9 +98,32 @@ for (var station_id in stations) { }).bindPopup(stations[station_id][1].join('
')).addTo(map); } +var greenIcon = new L.Icon({ + iconUrl: '/static/leaflet/images/marker-icon-2x-green.png', + shadowUrl: '/static/leaflet/images/marker-shadow.png', + iconSize: [25, 41], + iconAnchor: [12, 41], + popupAnchor: [1, -34], + shadowSize: [41, 41] +}); + +var goldIcon = new L.Icon({ + iconUrl: '/static/leaflet/images/marker-icon-2x-gold.png', + shadowUrl: '/static/leaflet/images/marker-shadow.png', + iconSize: [25, 41], + iconAnchor: [12, 41], + popupAnchor: [1, -34], + shadowSize: [41, 41] +}); + var marker; % for my $marker (@{stash('markers') // [] } ) { - marker = L.marker([<%= $marker->{lat} %>,<%= $marker->{lon} %>]).addTo(map); + % if ($marker->{icon}) { + marker = L.marker([<%= $marker->{lat} %>,<%= $marker->{lon} %>], {icon: <%= $marker->{icon} %>}).addTo(map); + % } + % else { + marker = L.marker([<%= $marker->{lat} %>,<%= $marker->{lon} %>]).addTo(map); + % } % if ($marker->{title}) { marker.bindPopup('<%= $marker->{title} %>'); % } -- cgit v1.2.3