Map::Metro::Plugin::Map - How to make your own map
Version 0.2405, released 2016-07-23.
# This is a modified part of the map from Map::Metro::Plugin::Map::Stockholm --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|color:#79c142 7|L7|Spårväg city --segments 10->,11<-|Stadshagen|Fridhemsplan % Västermalmsgallerian 10,11|Fridhemsplan|Rådhuset % :Radhuset 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
It is straightforward to create a map file. It consists of four parts:
This is a list of all stations in the network. Currently only one value per line. Don't use | in station names.
|
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 options in turn is a comma separated list of colon separated key-value pairs. Currently the only supported option is:
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.
* Optional options, a comma separated list of colon separated key-value pairs:
* color. Hexadecimal, preceeded by '#'. Can be used by visualization tools to give lines their regular colours.
* width. Integer. Can be used by visualization tools to give lines different widths, for example differentiate different types of transport.
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, segments part starts like this:
10->,11<-|Stadshagen|Fridhemsplan % Västermalmsgallerian 10,11|Fridhemsplan|Rådhuset % :Radhuset
First, 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.
<-
Second, the % notation makes it possible to attach more names to the station.
%
If the name begins with a : it is considered a search name. This mean that it is possible to search, but it is generally not displayed (eg. by the PrettyPrinter hook).
:
If the name doesn't begin with a : it is considered an alternative name. The PrettyPrinter hook displays them as "first given name/alternative name".
Alternative names are used when the same station is known as both names. This is not very common.
Search names is mostly useful when a station has changed names (keep the old name as a search name)
Overriding station names through a hook (as Map::Metro::Plugin::Hook::Helsinki::Swedish does) can be a good way to present translations or transliterations of station names.
Just make sure that no names collide.
Start a distribution called Map::Metro::Plugin::Map::$city.
Map::Metro::Plugin::Map::$city
The easiest way to do that is to use Dist::Zilla with Dist::Zilla::MintingProfile::MapMetro::Map. See also Task::MapMetro::Dev.
$ dzil new -P MapMetro::Map Map::Metro::Plugin::Map::TheCity
Save the map file as map-$city.metro in the share directory.
map-$city.metro
share
Say we make a map for London; then Map::Metro::Plugin::Map::London would look like this:
Map::Metro::Plugin::Map::London
use strict; package Map::Metro::Plugin::Map::London; our $VERSION = 0.01; use Moose; with 'Map::Metro::Plugin::Map'; has '+mapfile' => ( default => 'map-london.metro', ); sub map_version { return $VERSION; } sub map_package { return __PACKAGE__; } 1;
By default, station names with diacritics get their un-diacritic form added as a search name. If this causes problems with a map file, add this to the module definition and it is turned off:
has '+do_undiacritic' => ( default => 0, );
https://github.com/Csson/p5-Map-Metro
https://metacpan.org/release/Map-Metro
Erik Carlsson <info@code301.com>
This software is copyright (c) 2016 by Erik Carlsson.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Map::Metro, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Map::Metro
CPAN shell
perl -MCPAN -e shell install Map::Metro
For more information on module installation, please visit the detailed CPAN module installation guide.