From e89312355b7ca9f20c2ede319e76f1970e5c932e Mon Sep 17 00:00:00 2001 From: Birte Kristina Friesel Date: Sun, 19 Nov 2023 12:24:29 +0100 Subject: Move location-specific data and accessors to ...::HAFAS::Location This is a breaking change that affects the accessors of ...::Stop and the return type of $hafas->results in locationSearch and geoSearch mode --- lib/Travel/Status/DE/HAFAS/Location.pm | 127 +++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 lib/Travel/Status/DE/HAFAS/Location.pm (limited to 'lib/Travel/Status/DE/HAFAS/Location.pm') diff --git a/lib/Travel/Status/DE/HAFAS/Location.pm b/lib/Travel/Status/DE/HAFAS/Location.pm new file mode 100644 index 0000000..288836b --- /dev/null +++ b/lib/Travel/Status/DE/HAFAS/Location.pm @@ -0,0 +1,127 @@ +package Travel::Status::DE::HAFAS::Location; + +use strict; +use warnings; +use 5.014; + +use parent 'Class::Accessor'; + +our $VERSION = '4.19'; + +Travel::Status::DE::HAFAS::Location->mk_ro_accessors( + qw(lid type name eva state lat lon distance_m weight)); + +sub new { + my ( $obj, %opt ) = @_; + + my $loc = $opt{loc}; + + my $ref = { + lid => $loc->{lid}, + type => $loc->{type}, + name => $loc->{name}, + eva => 0 + $loc->{extId}, + state => $loc->{state}, + lat => $loc->{crd}{y} * 1e-6, + lon => $loc->{crd}{x} * 1e-6, + + # only for geosearch requests + weight => $loc->{wt}, + distance_m => $loc->{dist}, + }; + + bless( $ref, $obj ); + + return $ref; +} + +sub TO_JSON { + my ($self) = @_; + + my $ret = { %{$self} }; + + return $ret; +} + +1; + +__END__ + +=head1 NAME + +Travel::Status::DE::HAFAS::Location - A single public transit location + +=head1 SYNOPSIS + + printf("Destination: %s (%8d)\n", $location->name, $location->eva); + +=head1 VERSION + +version 4.19 + +=head1 DESCRIPTION + +Travel::Status::DE::HAFAS::Location describes a HAFAS location that either +belongs to a location (e.g. on a journey's route) or has been returned as part of +a location search request. + +=head1 METHODS + +=head2 ACCESSORS + +=over + +=item $location->name + +Location name, e.g. "Essen Hbf" or "Unter den Linden/B75, Tostedt". + +=item $location->eva + +EVA ID, e.g. 8000080. + +=item $location->lat + +Location latitude (WGS-84) + +=item $location->lon + +Location longitude (WGS-84) + +=item $location->distance_m (geoSearch) + +Distance in meters between the requested coordinates and this location. + +=item $location->weight (geoSearch, locationSearch) + +Weight / Relevance / Importance of this location using an unknown metric. +Higher values indicate more relevant locations. + +=back + +=head1 DIAGNOSTICS + +None. + +=head1 DEPENDENCIES + +=over + +=item Class::Accessor(3pm) + +=back + +=head1 BUGS AND LIMITATIONS + +None known. + +=head1 SEE ALSO + +Travel::Routing::DE::HAFAS(3pm). + +=head1 AUTHOR + +Copyright (C) 2023 by Birte Kristina Friesel Ederf@finalrewind.orgE + +=head1 LICENSE + +This module is licensed under the same terms as Perl itself. -- cgit v1.2.3