NAME

Geo::Leaflet - Generates a Leaflet JavaScript map web page

SYNOPSIS

use Geo::Leaflet;
my $map = Geo::Leaflet->new;
print $map->html;

DESCRIPTION

This package generates a Leaflet JavaScript map web page.

CONSTRUCTORS

new

Returns a map object

my $map = Geo::Leaflet->new(
                            id     => "map",
                            center => [$lat, $lon],
                            zoom   => 13,
                           );

MAP PROPERTIES

id

Sets and returns the html id of the map.

Default: "map"

center

Sets and returns the center of the map.

$map->center([$lat, $lon]);
my $center = $map->center;

Default: [38.2, -97.2]

zoom

Sets and returns the zoom of the map.

$map->zoom(4.5);
my $zoom = $map->zoom;

Default: 4.5

setView

Sets the center and zoom of the map and returns the map object (i.e., matches leaflet.js interface).

$map->setView([51.505, -0.09], 13);

width

Sets and returns the percent or pixel width of the map.

$map->width('600px');
$map->width('100%');
my $width = $map->width;

Default: 100%

height

Sets and returns the percent or pixel height of the map.

$map->height('400px');
$map->height('100%');
my $height = $map->height;

Default: 100%

HTML PROPERTIES

title

Sets and returns the HTML title.

Default: "Leaflet Map"

TILE LAYER CONSTRUCTOR

tileLayer

Creates and returns a tileLayer object which is added to the map.

$map->tileLayer(
                url     => 'https://tile.openstreetmap.org/{z}/{x}/{y}.png',
                options => {
                  maxZoom     => 19,
                  attribution => '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>',
                },
               );

Default: OpenStreetMaps

See: https://leafletjs.com/reference.html#tilelayer

ICON CONSTRUCTOR

icon

my $icon = $map->icon(
                      name    => "my_icon", #must be a valid JavaScript variable name
                      options => {
                                  iconUrl      => "my-icon.png",
                                  iconSize     => [38, 95],
                                  iconAnchor   => [22, 94],
                                  popupAnchor  => [-3, -76],
                                  shadowUrl    => "my-icon-shadow.png",
                                  shadowSize   => [68, 95],
                                  shadowAnchor => [22, 94],
                                 }
                     );

See: https://leafletjs.com/reference.html#icon

MAP OBJECT CONSTRUCTORS

marker

Adds a marker object to the map and returns a reference to the marker object.

$map->marker(lat=>$lat, lon=>$lon);

See: https://leafletjs.com/reference.html#marker

polyline

Adds a polyline object to the map and returns a reference to the polyline object.

my $latlngs = [[$lat, $lon], ...]
$map->polyline(coordinates=>$latlngs, options=>{});

See: https://leafletjs.com/reference.html#polyline

polygon

Adds a polygon object to the map and returns a reference to the polygon object.

my $latlngs = [[$lat, $lon], ...]
$map->polygon(coordinates=>$latlngs, options=>{});

See: https://leafletjs.com/reference.html#polygon

rectangle

Adds a rectangle object to the map and returns a reference to the rectangle object.

$map->rectangle(llat       => $llat,
                llon       => $llon,
                ulat       => $ulat,
                ulon       => $ulon,
                options => {});

See: https://leafletjs.com/reference.html#rectangle

circle

Adds a circle object to the map and returns a reference to the circle object.

$map->circle(lat=>$lat, lon=>$lon, radius=>$radius, options=>{});

See: https://leafletjs.com/reference.html#circle

METHODS

html

html_head_script

html_head_style

html_body_div

html_body_script

html_body_script_map

html_body_script_contents

OBJECT ACCESSORS

HTML

Returns an HTML:Tiny object to generate HTML.

JSON

Returns a JSON::XS object to generate JSON.

SEE ALSO

Geo::Google::StaticMaps::V2 https://leafletjs.com/

AUTHOR

Michael R. Davis

COPYRIGHT AND LICENSE

Copyright (C) 2024 by Michael R. Davis

MIT LICENSE