NAME
Global::Rainbow::Map - make the world look like a rainbow, but usefully
SYNOPSIS
my $map = Global::Rainbow::Map->new(
gb => 'red',
ca => 'orange',
in => 'yellow',
nz => 'green',
au => 'blue',
lk => 'purple',
);
print $map->svg;
DESCRIPTION
Global::Rainbow::Map generates a map of the world (Robinson projection)
with each country shaded whatever colour you like. In fact, you can even
choose colours that don't appear in the rainbow... like magenta!
The possibilities for such a module are clearly endless. If you had a
table listing per-capita alcohol consumption, you could create a map of
the world in different colours to illustrate per-capita alcohol
consumption. Or if you had a table of which countries had won the most
Olympic medals for swimming, then you could create a map of the world in
different colours to illustrate which countries had won the most Olympic
medals for swimming.
The template map used is Wikipedia's public domain blank world map
<http://en.wikipedia.org/wiki/File:BlankMap-World6.svg>, the 14 Feb 2012
revision.
Constructor
`new(%colours)`
Creates a new map. The hash is a list of country code to colour
pairings.
Country codes are typically ISO 3166-1 two letter codes. If you don't
know the code for a particular country, Locale::Country can help you
out. There are a number of additional codes like "eu" (the whole
European Union) and "aq" (Antarctica). These codes are all lower case.
Colours can be hexadecimal codes like '#ff0000' or named colours from
the SVG or X11 palettes. Countries not coloured will remain a pale
grey.
Hash keys which do not match the regular expression
`/^[a-z][a-z0-9-]*[a-z0-9]$/`, in particular hash keys starting with a
hyphen are reserved for future use.
Object Methods
The useful ones:
`svg`
Returns the coloured SVG map as a string.
`libxml_document`
Returns the same coloured SVG map, but as an XML::LibXML::Document.
Somewhat less useful for everyday use, but may be useful for people
subclassing this module...
`countries`
Returns the list of country codes which have been explicitly assigned
a colour (i.e. the keys to the hash given in the constructor).
`colour_for_country($country_code)`
Returns the colour for a country, as a blessed Color::Library::Color
object.
Will return undef if the country has not been explicitly assigned a
colour.
`generate_css`
Generates the CSS that would be inserted into the SVG output.
Class Methods
Again, these are mostly useful for people subclassing the module.
`get_template`
Returns the template used for maps as an XML::LibXML::Document.
Fetching the template and modifying it using DOM methods will affect
all maps subsequently generated for the lifetime of the process. So
beware.
`clone_template`
As per `get_template`, but returns a clone of the template.
BUGS
Please report any bugs to
<http://rt.cpan.org/Dist/Display.html?Queue=Global-Rainbow-Map>.
SEE ALSO
<http://commons.wikimedia.org/wiki/File_talk:BlankMap-World6.svg/Documenta
tion>.
<http://www.biotele.com/magenta.html>.
AUTHOR
Toby Inkster <tobyink@cpan.org>.
COPYRIGHT AND LICENCE
Toby Inkster, 2012. No rights reserved.
To the extent possible under law, Toby Inkster has waived all copyright
and related or neighboring rights to Global::Rainbow::Map. This work is
published from: United Kingdom.
<http://creativecommons.org/publicdomain/zero/1.0/>.
DISCLAIMER OF WARRANTIES
THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.