summaryrefslogtreecommitdiff
path: root/index.pl
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2018-10-07 11:35:47 +0200
committerDaniel Friesel <derf@finalrewind.org>2018-10-07 11:35:47 +0200
commit6fd985ae7ef9800d5837af942d74ad6e7562c75d (patch)
tree026e9757dccd327279e1f9f71e601dd03a28d15c /index.pl
parentd95cb9d06a346e16e8cc2a63b9b0e1279a19a251 (diff)
show close stations via geolocation
Diffstat (limited to 'index.pl')
-rwxr-xr-xindex.pl32
1 files changed, 31 insertions, 1 deletions
diff --git a/index.pl b/index.pl
index 1becd27..2f2e46f 100755
--- a/index.pl
+++ b/index.pl
@@ -577,7 +577,7 @@ helper 'navbar_class' => sub {
get '/' => sub {
my ($self) = @_;
- $self->render('landingpage');
+ $self->render( 'landingpage', with_geolocation => 1 );
};
post '/action' => sub {
@@ -640,6 +640,36 @@ post '/action' => sub {
}
};
+post '/x/geolocation' => sub {
+ my ($self) = @_;
+
+ my $lon = $self->param('lon');
+ my $lat = $self->param('lat');
+
+ if ( not $lon or not $lat ) {
+ $self->render( json => { error => 'Invalid lon/lat received' } );
+ }
+ else {
+ my @candidates = map {
+ {
+ ds100 => $_->[0][0],
+ name => $_->[0][1],
+ eva => $_->[0][2],
+ lon => $_->[0][3],
+ lat => $_->[0][4],
+ distance => $_->[1],
+ }
+ } Travel::Status::DE::IRIS::Stations::get_station_by_location( $lon,
+ $lat, 5 );
+ $self->render(
+ json => {
+ candidates => [@candidates],
+ }
+ );
+ }
+
+};
+
get '/*station' => sub {
my ($self) = @_;
my $station = $self->stash('station');