Google Maps and KML

coordinatedcapableΛογισμικό & κατασκευή λογ/κού

4 Νοε 2013 (πριν από 3 χρόνια και 7 μήνες)

73 εμφανίσεις

Google Maps and KML

Konstantinos Niktas

COM SCI 219

Spring 2008

2

What is KML?


KML is an XML file format “used to display geographic
data in an Earth browser such as Google Earth, Google
Maps, and Google Maps for mobile.”


It’s XML so it follows a case
-
sensitive tag
-
based
structure with nested elements and attributes.


Currently in v2.1. Google has v2.2 in beta right now.

3

More Resources


KML is very extensive. It is almost a “mini
programming/scripting” language itself with
inheritance, types, and referencing to other files.


KML Documentation:

http://code.google.com/apis/kml/documentation


KML Tutorial:

http://code.google.com/apis/kml/documentation/
kml_tut.html


KML 2.2 Beta:

http://code.google.com/apis/kml/documentation/
kml_tags_beta1.html


4

KML Elements


Everything is an “Object”.
(Everything inherits from
the abstract “Object” KML
element).


There are abstract
elements


Everything is a tag:

<Point>…</Point>


The more advanced tags
are (usually) for Google
Earth.

5

Google Maps supports a subset of KML…

Google Maps supports…


Placemarks


Icons


Folders


Descriptive HTML


KMZ (compressed KML,
including attached images)


Polylines and polygons


Styles for polylines and
polygons, including color, fill,
and opacity


Network links to import data
dynamically


Ground overlays and screen
overlays


Google Maps for Mobile
supports


Placemarks with
<name> elements

6

KML Basics


Structure


Placemarks/Points/Coordinates


Descriptive HTML


Ground Overlays


Paths/Polygons

7

Structure


KML is in XML format


Usually everything contained in Document tag


Can have multiple Folder tags to separate different kinds of data.
For example, one folder containing KML to show locations of
pictures and another folder containing KML to show your path
through the day.

8

Placemarks/Points/Coordinates


The easiest element in KML.


A simple point on the map. It only needs a name and a location.
You can give it a description too.


Placemark tag defines the place mark


A Point tag within it defines where the Placemark will be.


A “type” called coordinate defines the Point.


Coordinates in KML are given long,lat. When typing in coordinates
directly into Google Maps, they are given lat,long. Be careful!

9

Descriptive HTML


You’ll probably want to do HTML within the description
tag.


You need to use the CDATA tag for this. If you don’t,
your HTML’s tags need to use entity references:

10

Ground Overlays


You can add an image onto the map. (For example, some kind of thermal map or
your own satellite imagery).


Uses the GroundOverlay tag.


Defined by an image file and a LatLonBox element.


There are also SuperOverlays. They let you use increasingly more detailed (larger)
images as you zoom in. They are much more complicated requiring multiple KML
files linked together. Explained here:
http://code.google.com/apis/kml/documentation/kml_21tutorial.html#superoverlays


11

Paths


Can define a path
using the Placemark
tag and the LineString
tag instead of the Point
tag.


Multiple coordinates.
Again by long,lat,alt.


“extrude” tag makes
the line go down to the
ground


“tessellate” breaks
each line into multiple
pieces. Good for long
lines so they don’t end
up underground.


0 = false, 1 = true



12

Polygons


Defined by Polygon tag.


Can have an inner and an
outer boundary


The boundaries are
themselves defined by
‘LinearRing’ elements.


altitudeMode allows the
polygons’ lines’ altitudes
to be ‘absolute’ to sea
level, ‘relativeToGround’,
or ‘clampToGround’.

13

Advanced KML


MIME Types


Styles


Screen Overlays


Network Links

14

MIME Type


KML Servers must follow certain rules


Must return response code of HTTP 200


The type itself is:

application/vnd.google
-
earth.kml+xml


Can set the type in PHP with:

header('Content
-
type: application/vnd.google
-
earth.kml+xml');


Body must contain valid KML data and the XML
declaration:

<?xml version="1.0" encoding="UTF
-
8"?>

15

Styles


Similar to CSS/HTML styles.


In a Style tag. Each style tag can have multiple styles within it: LineStyle, PolyStyle, ColorStyle,
etc.


The tag has an “id” so it can be referenced within a file or from another. (A Global KML Style file
perhaps?)


Add a styleUrl element to use a style.


HW2 could have different icons based on content? A site that grabs all the Google Map icons:

http://www.visual
-
case.it/cgi
-
bin/vc/GMapsIcons.pl



To reference a style within
the file:

<styleUrl>#styleName</styleUrl>


Outside the file:

<styleUrl>url#styleName</styleUrl>

16

Screen Overlays


Add an image to the Google Maps/Earth window.


Could be used for whatever purpose you like.


ScreenOverlay tag.


overlayXY and screenXY line up the image to the actual map


In this example, (0,1) (in fractions) means 0% of x (all the way to the left) and 100%
of y (all the way to the top). The upper
-
left of the image is lined up with the upper
-
left
of the map. The unit can also be determined by pixels.


Size tag (obviously) controls size of the image. 0 means to maintain aspect ratio,
-
1
indicate to use native dimension. Using some other value makes the image that
value. For example 0.2 with units on fraction makes the image take up 20% of that
dimension.

17

Network Links


Allows importing of KML, KMZ, and image files for ground/screen overlays.


Local or remote file


Uses a Link tag


Good way to split up large KML file into much smaller KML files. More manageable.


More interesting feature: can use scripts to generate KML data on the fly. (PHP,
Perl, etc.)


Usually uni
-
direction data flow (server to map) but when using “viewRefreshMode”,
the map can pass the script information on what is being viewed (the LatLon box).
Google Maps/Earth will call the script with a BBOX parameter. Look at the KML
Tutorial for more information.

18

Expert KML


Time/Animation


Various “Mashups”

19

Time/Animation


We can use the TimeStamp and TimeSpan
elements to add time information to any
element that inherits from the
Feature

abstract
element: NetworkLink, Placemark,
ScreenOverlay, GroundOverlay, Folder, and
Document.


TimeStamp has the element “when” inside it. A
single point in time.


TimeSpan has two possible elements: “begin”
and “end”. We can have an unbounded
TimeSpan by not including “end”.


Times are in many possible forms: YYYY,
YYYY
-
MM, YYYY
-
MM
-
DD, etc. (can include
specific hours, minutes, time zones, etc.)


In Google Earth, when loading a KML/KMZ file
that contains TimeStamps & TimeSpans, a
time slider will appear along the top allowing an
animation of the data.


Add the tags to your Placemarks, overlays, or
whatever else you want. (As long as it’s a
Feature
).


The KML data will act like there is no time data
if it is loaded into Google Maps. (Google Earth
feature only).

20

“Mashups” and Others


Torch Relay:
http://maps.google.com/help/maps/torchrelay/


Headline Map:

http://headlinemap.com/


Placeopedia:

http://www.placeopedia.com/


Super Skydive!

http://www.superskydive.nl/skydive/amstmaren1


21

End


KML Documentation:

http://code.google.com/apis/kml/documentation


KML Tutorial:

http://code.google.com/apis/kml/documentation/
kml_tut.html


KML 2.2 Beta:

http://code.google.com/apis/kml/documentation/
kml_tags_beta1.html


For my example KML and PHP files, check out:

http://leonia.cens.ucla.edu/~cs219kn/kml/