Provided by: libgeo-googleearth-pluggable-perl_0.17-1_all bug

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.

       Geo::GoogleEarth::Pluggable (aka Document) is a Geo::GoogleEarth::Pluggable::Folder with a
       render method.

   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.

         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!

   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.

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