NAME

Map::Metro::Plugin::Map - How to make your own map

SYNOPSIS

--stations
Stadshagen
Fridhemsplan
Rådhuset
T-Centralen

# comments are possible
Gamla stan
Slussen
Medborgarplatsen
Skanstull
Gullmarsplan
Globen
Sergels torg
Nybroplan

--transfers
T-Centralen|Sergels torg|weight:4

--lines
10|T10|Blue line
11|T11|Blue line
19|T19|Green line
7|L7|Spårväg city

--segments
10->,11<-|Stadshagen|Fridhemsplan
10,11|Fridhemsplan|Rådhuset
10,11|Rådhuset|T-Centralen
10,11|T-Centralen|Kungsträdgården
19|T-Centralen|Gamla stan
19|Gamla stan|Slussen
19|Slussen|Medborgarplatsen
19|Medborgarplatsen|Skanstull
19|Skanstull|Gullmarsplan
19|Gullmarsplan|Globen
7|Sergels torg|Nybroplan

DESCRIPTION

It is straightforward to create a map file. It consists of four parts:

--stations

This is a list of all stations in the network. Currently only one value per line. Don't use | in station names.

--transfers

This is a list of Transfers. If two stations share at least one line they are not transfers. Three groups of data per line (delimited by |):

The first station.
The following station.
Optional options.

The options in turn is a comma separated list of colon separated key-value pairs. Currently the only supported option is:

weight. Integer. Set a custom weight for the 'cost' of making this transfer. Default value is 5. (Travelling between two stations on the same line cost 1, and changing lines at a station costs 3).

--lines

This is a list of all lines in the network. Three values per line (delimited by |):

Line id (only a-z, A-Z and 0-9 allowed). Used in segments.
Line name. This should preferably be short(ish) and a common name for the line.
Line description. This can be a longer common name for the line.

--segments

This is a list of all Segments in the network. (A segment is a pair of consecutive stations.) Three groups of data per line (delimited by |):

* A list of line ids (comma delimited). This references the line list above. The list of line ids represents all lines travelling between the two stations.

* The first station.

* The following station

In the synopsis, one of the segments look like this:

10->,11<-|Stadshagen|Fridhemsplan

The arrow notation describes the direction of travel (the default is both ways, all three can be combined in one segment definition).

-> means that the line only travels from Stadshagen to Fridhemsplan.

<- means that the line only travels from Fridhemsplan to Stadshagen.

WHAT NOW?

Start a distribution called Map::Metro::Plugin::Map::$city.

Save the map file as map-$city.metro in the share directory.

Say we make a map for London; then Map::Metro::Plugin::Map::London would look like this:

package Map::Metro::Plugin::Map::London {

    use Moose;
    use File::ShareDir 'dist_dir';
    use Path::Tiny;
    with 'Map::Metro::Plugin::Map';

    has '+mapfile' => (
        default => sub { path(dist_dir('Map-Metro-Plugin-Map-London'))->child('map-london.metro')->absolute },
    );
}

1;

AUTHOR

Erik Carlsson <info@code301.com>

COPYRIGHT

Copyright 2014 - Erik Carlsson

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.