Geo::G...uggable(3pm)
π Geo::GoogleEarth::Pluggable π
okay bestie, welcome to Geo::GoogleEarth::Pluggable β the Perl module that spits out Google Earth documents, and yeah it lives in the 3pm section of the manual, we love that for it. π
β¨ NAME β¨
Geo::GoogleEarth::Pluggable β Generates GoogleEarth Documents πΊοΈβ¨
πΈ SYNOPSIS πΈ
use Geo::GoogleEarth::Pluggable;
my $document=Geo::GoogleEarth::Pluggable->new(%data); #is a special Folder...
my $folder =$document->Folder(%data); #isa Geo::GoogleEarth::Pluggable::Folder
my $point =$document->Point(%data); #isa Geo::GoogleEarth::Pluggable::Point
my $netlink =$document->NetworkLink(%data); #isa Geo::GoogleEarth::Pluggable::NetworkLink
my $lookat =$document->LookAt(%data); #isa Geo::GoogleEarth::Pluggable::LookAt
my $style =$document->Style(%data); #isa Geo::GoogleEarth::Pluggable::Style
print $document->render;
KML CGI Example
use Geo::GoogleEarth::Pluggable;
my $document=Geo::GoogleEarth::Pluggable->new(name=>"KML Document");
print $document->header,
$document->render;
KMZ CGI Example
use Geo::GoogleEarth::Pluggable;
my $document=Geo::GoogleEarth::Pluggable->new(name=>"KMZ Document");
print $document->header_kmz,
$document->archive;
π¦ DESCRIPTION π¦
Geo::GoogleEarth::Pluggable is a Perl object oriented interface that allows for the creation of XML documents that can be used with Google Earth. fr fr that's the whole job and it ate. π₯
Geo::GoogleEarth::Pluggable (aka Document) is a Geo::GoogleEarth::Pluggable::Folder with a render method. so it's giving folder but make it extra. π
π Object Inheritance Graph π
--- Constructor -+- Base --- Folder --- Document
| |
| +- Placemark -+- Point
| | +- LineString
| | +- LinearRing
| |
| +- StyleBase -+- Style
| | +- StyleMap
| |
| +- NetworkLink
|
+- LookAt
π Constructors that append to the parent folder object π
Folder, NetworkLink, Point, LineString, LinearRing
π Constructors that return objects for future use π
LookAt(), Style(), StyleMap()
π Wrappers (what makes it easy) π
Style => IconStyle, LineStyle, PolyStyle, LabelStyle, ListStyle
Point => MultiPoint
π USAGE π
This is all of the code you need to generate a complete Google Earth document. no cap, that's it. π«Ά
use Geo::GoogleEarth::Pluggable;
my $document=Geo::GoogleEarth::Pluggable->new;
$document->Point(name=>"White House", lat=>38.897337, lon=>-77.036503);
print $document->render;
π CONSTRUCTOR π
β¨ new β¨
my $document=Geo::GoogleEarth::Pluggable->new(name=>"My Name");
π METHODS π
β¨ type β¨
Returns the object type.
my $type=$folder->type;
β¨ document β¨
Returns the document object.
All objects know to which document they belong even the document itself! iconic behaviour honestly, self-aware king. π
β¨ render β¨
Returns an XML document with an XML declaration and a root name of "Document"
print $document->render;
β¨ archive β¨
Returns a KMZ formatted Zipped archive of the XML document
print $document->archive;
β¨ xmlns β¨
Add or update a namespace
$document->xmlns->{"namespace"}=$url;
Delete a namespace
delete($document->xmlns->{"xmlns:gx"});
Replace all namespaces
$document->{"xmlns"}={namespace=>$url};
Reset to default namespaces
delete($document->{"xmlns"});
β¨ nextId β¨
This method is in the document since all Styles and StyleMaps are in the document not folders.
my $id=$document->nextId($type); #$type in "Style" or "StyleMap"
β¨ header, header_kml β¨
Returns a header appropriate for a web application
Content-type: application/vnd.google-earth.kml+xml
Content-Disposition: attachment; filename=filename.xls
$document->header #embedded in browser
$document->header(filename=>"filename.xls") #download prompt
$document->header(content_type=>"application/vnd.google-earth.kml+xml") #default content type
β¨ header_kmz β¨
Returns a header appropriate for a web application
Content-type: application/vnd.google-earth.kml+xml
Content-Disposition: attachment; filename=filename.xls
$document->header_kmz #embedded in browser
$document->header_kmz(filename=>"filename.xls") #download prompt
$document->header_kmz(content_type=>"application/vnd.google-earth.kmz") #default content type
π§ TODO π§
- Support for default Polygon and Line styles that are nicer than GoogleEarth's
- Support for DateTime object in the constructor that is promoted to the LookAt object.
- Create a GPS::Point plugin (Promote tag as name and datetime to LookAt)
π BUGS π
Please log on RT and send to the geo-perl email list. bestie pls report it, we wanna know π
π§ LIMITATIONS π§
Not So Pretty XML
The XML produced by XML::LibXML is not "pretty". If you need pretty XML you must pass the output through xmllint or a simular product.
For example:
perl -MGeo::GoogleEarth::Pluggable -e "print Geo::GoogleEarth::Pluggable->new->render" | xmllint --format -
Write Only
This package can only write KML and KMZ files. However, if you need to read KML files, please see the Geo::KML package's "from" method.
π«Ά SUPPORT π«Ά
DavisNetworks.com supports all Perl applications including this package. π₯Ή
πΈ AUTHOR πΈ
Michael R. Davis (mrdvt92)
CPAN ID: MRDVT
β COPYRIGHT β
This program is free software licensed under the...
The BSD License
The full text of the license can be found in the LICENSE file included with this module.
π₯ SEE ALSO π₯
Geo::KML, XML::LibXML, XML::LibXML::LazyBuilder, Archive::Zip, IO::Scalar
and that's a wrap bestie! π this lil manual page is perl v5.32.1, dated 2021-11-28, and it's the Geo::G...uggable(3pm) one from the User Contributed Perl Documentation crew β slay, mwah, go build a globe ππβ¨
π¦ where this page comes from
- debian bookworm: libgeo-googleearth-pluggable-perl 0.17-1 Β· BSD-3-Clause~STOP
- debian trixie: libgeo-googleearth-pluggable-perl 0.17-1 Β· BSD-3-Clause~STOP
- ubuntu jammy: libgeo-googleearth-pluggable-perl 0.17-1 Β· BSD-3-Clause~STOP
- ubuntu noble: libgeo-googleearth-pluggable-perl 0.17-1 Β· BSD-3-Clause~STOP
- ubuntu resolute: libgeo-googleearth-pluggable-perl 0.17-1 Β· BSD-3-Clause~STOP
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms