libxml-ruby 2.1.1-x86-mingw32 → 2.1.2-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
data/HISTORY CHANGED
@@ -1,5 +1,13 @@
1
1
  = Release History
2
2
 
3
+ == 2.1.2 / 2011-08-03 Charlie Savage
4
+
5
+ * Fix segmentation fault that could occur when an XPathContext was marked
6
+ before it was fully initialized (Charlie Savage).
7
+
8
+ * Add mark method to document to mark all nodes currently being accessed
9
+ by ruby. This make Ruby Enterprise Edition happy (Charlie Savage).
10
+
3
11
  == 2.1.1 / 2011-07-31 Charlie Savage
4
12
 
5
13
  * Switch to using def files to control library exports (Charlie Savage).
@@ -14,7 +14,6 @@ else
14
14
  $CFLAGS = CONFIG['CFLAGS']
15
15
  end
16
16
  $LDFLAGS = CONFIG['LDFLAGS']
17
-
18
17
  $LIBPATH.push(Config::CONFIG['libdir'])
19
18
 
20
19
  def crash(str)
@@ -55,6 +55,25 @@
55
55
  VALUE cXMLDocument;
56
56
 
57
57
 
58
+ void rxml_document_mark_node_list(xmlNodePtr xnode)
59
+ {
60
+ if (xnode == NULL) return;
61
+
62
+ while (xnode != NULL)
63
+ {
64
+ rxml_document_mark_node_list(xnode->children);
65
+ if (xnode->_private)
66
+ rb_gc_mark((VALUE) xnode->_private);
67
+ xnode = xnode->next;
68
+ }
69
+ }
70
+
71
+ void rxml_document_mark(xmlDocPtr xdoc)
72
+ {
73
+ if (xdoc)
74
+ rxml_document_mark_node_list(xdoc->children);
75
+ }
76
+
58
77
  void rxml_document_free(xmlDocPtr xdoc)
59
78
  {
60
79
  xdoc->_private = NULL;
@@ -72,7 +91,7 @@ VALUE rxml_document_wrap(xmlDocPtr xdoc)
72
91
  }
73
92
  else
74
93
  {
75
- result = Data_Wrap_Struct(cXMLDocument, NULL, rxml_document_free, xdoc);
94
+ result = Data_Wrap_Struct(cXMLDocument, rxml_document_mark, rxml_document_free, xdoc);
76
95
  xdoc->_private = (void*) result;
77
96
  }
78
97
 
@@ -88,7 +107,7 @@ VALUE rxml_document_wrap(xmlDocPtr xdoc)
88
107
  */
89
108
  static VALUE rxml_document_alloc(VALUE klass)
90
109
  {
91
- return Data_Wrap_Struct(klass, NULL, rxml_document_free, NULL);
110
+ return Data_Wrap_Struct(klass, rxml_document_mark, rxml_document_free, NULL);
92
111
  }
93
112
 
94
113
  /*
@@ -890,7 +890,12 @@ static VALUE rxml_reader_expand(VALUE self)
890
890
  xmlNodePtr xnode = NULL;
891
891
 
892
892
  /* At this point we need to wrap the reader's document as explained above. */
893
- rxml_document_wrap(xmlTextReaderCurrentDoc(xreader));
893
+ xmlDocPtr xdoc = xmlTextReaderCurrentDoc(xreader);
894
+
895
+ if (!xdoc)
896
+ rb_raise(rb_eRuntimeError, "The reader does not have a document. Did you forget to call read?");
897
+
898
+ rxml_document_wrap(xdoc);
894
899
 
895
900
  /* And now hook in a mark function */
896
901
  RDATA(self)->dmark = (RUBY_DATA_FUNC)rxml_reader_mark;
@@ -1,9 +1,9 @@
1
1
  /* Don't nuke this block! It is used for automatically updating the
2
2
  * versions below. VERSION = string formatting, VERNUM = numbered
3
3
  * version for inline testing: increment both or none at all.*/
4
- #define RUBY_LIBXML_VERSION "2.1.1"
5
- #define RUBY_LIBXML_VERNUM 211
4
+ #define RUBY_LIBXML_VERSION "2.1.2"
5
+ #define RUBY_LIBXML_VERNUM 212
6
6
  #define RUBY_LIBXML_VER_MAJ 2
7
7
  #define RUBY_LIBXML_VER_MIN 1
8
- #define RUBY_LIBXML_VER_MIC 1
8
+ #define RUBY_LIBXML_VER_MIC 2
9
9
  #define RUBY_LIBXML_VER_PATCH 0
@@ -33,7 +33,7 @@ static void rxml_xpath_context_free(xmlXPathContextPtr ctxt)
33
33
 
34
34
  static void rxml_xpath_context_mark(xmlXPathContextPtr ctxt)
35
35
  {
36
- if (ctxt->doc->_private)
36
+ if (ctxt && ctxt->doc->_private)
37
37
  rb_gc_mark((VALUE) ctxt->doc->_private);
38
38
  }
39
39
 
@@ -43,7 +43,7 @@ static VALUE rxml_xpath_context_alloc(VALUE klass)
43
43
  }
44
44
 
45
45
  /* call-seq:
46
- * XPath::Context.new(node) -> XPath::Context
46
+ * XPath::Context.new(doc) -> XPath::Context
47
47
  *
48
48
  * Creates a new XPath context for the specified document. The
49
49
  * context can then be used to evaluate an XPath expression.
@@ -53,22 +53,11 @@ static VALUE rxml_xpath_context_alloc(VALUE klass)
53
53
  * nodes = XPath::Object.new('//first', context)
54
54
  * nodes.length == 1
55
55
  */
56
- static VALUE rxml_xpath_context_initialize(VALUE self, VALUE node)
56
+ static VALUE rxml_xpath_context_initialize(VALUE self, VALUE document)
57
57
  {
58
58
  xmlDocPtr xdoc;
59
- VALUE document;
60
59
 
61
- if (rb_obj_is_kind_of(node, cXMLNode) == Qtrue)
62
- {
63
- document = rb_funcall(node, rb_intern("doc"), 0);
64
- if (NIL_P(document))
65
- rb_raise(rb_eTypeError, "Supplied node must belong to a document.");
66
- }
67
- else if (rb_obj_is_kind_of(node, cXMLDocument) == Qtrue)
68
- {
69
- document = node;
70
- }
71
- else
60
+ if (rb_obj_is_kind_of(document, cXMLDocument) != Qtrue)
72
61
  {
73
62
  rb_raise(rb_eTypeError, "Supplied argument must be a document or node.");
74
63
  }
@@ -43,7 +43,7 @@ static void rxml_xpath_object_free(rxml_xpath_object *rxpop)
43
43
  }
44
44
 
45
45
  /* Custom free function for copied namespace nodes */
46
- static void rxml_namespace_xpath_free(xmlNsPtr xns)
46
+ static void rxml_xpath_namespace_free(xmlNsPtr xns)
47
47
  {
48
48
  xmlFreeNs(xns);
49
49
  }
@@ -69,7 +69,7 @@ VALUE rxml_xpath_object_wrap(xmlDocPtr xdoc, xmlXPathObjectPtr xpop)
69
69
  for (i = 0;i < xpop->nodesetval->nodeNr; i++)
70
70
  {
71
71
  xmlNodePtr xnode = xpop->nodesetval->nodeTab[i];
72
- if (xnode!= NULL && xnode->type == XML_NAMESPACE_DECL)
72
+ if (xnode != NULL && xnode->type == XML_NAMESPACE_DECL)
73
73
  {
74
74
  VALUE ns = Qnil;
75
75
  xmlNsPtr xns = (xmlNsPtr)xnode;
@@ -82,7 +82,7 @@ VALUE rxml_xpath_object_wrap(xmlDocPtr xdoc, xmlXPathObjectPtr xpop)
82
82
  /* Specify a custom free function here since by default
83
83
  namespace nodes will not be freed */
84
84
  ns = rxml_namespace_wrap((xmlNsPtr)xnode);
85
- RDATA(ns)->dfree = (RUBY_DATA_FUNC)rxml_namespace_xpath_free;
85
+ RDATA(ns)->dfree = (RUBY_DATA_FUNC)rxml_xpath_namespace_free;
86
86
  rb_ary_push(rxpop->nsnodes, ns);
87
87
  }
88
88
  }
@@ -91,24 +91,24 @@ VALUE rxml_xpath_object_wrap(xmlDocPtr xdoc, xmlXPathObjectPtr xpop)
91
91
  return Data_Wrap_Struct(cXMLXPathObject, rxml_xpath_object_mark, rxml_xpath_object_free, rxpop);
92
92
  }
93
93
 
94
- static VALUE rxml_xpath_object_tabref(xmlXPathObjectPtr xpop, int apos)
94
+ static VALUE rxml_xpath_object_tabref(xmlXPathObjectPtr xpop, int index)
95
95
  {
96
- if (apos < 0)
97
- apos = xpop->nodesetval->nodeNr + apos;
96
+ if (index < 0)
97
+ index = xpop->nodesetval->nodeNr + index;
98
98
 
99
- if (apos < 0 || apos + 1 > xpop->nodesetval->nodeNr)
99
+ if (index < 0 || index + 1 > xpop->nodesetval->nodeNr)
100
100
  return Qnil;
101
101
 
102
- switch (xpop->nodesetval->nodeTab[apos]->type)
102
+ switch (xpop->nodesetval->nodeTab[index]->type)
103
103
  {
104
104
  case XML_ATTRIBUTE_NODE:
105
- return rxml_attr_wrap((xmlAttrPtr) xpop->nodesetval->nodeTab[apos]);
105
+ return rxml_attr_wrap((xmlAttrPtr) xpop->nodesetval->nodeTab[index]);
106
106
  break;
107
107
  case XML_NAMESPACE_DECL:
108
- return rxml_namespace_wrap((xmlNsPtr)xpop->nodesetval->nodeTab[apos]);
108
+ return rxml_namespace_wrap((xmlNsPtr)xpop->nodesetval->nodeTab[index]);
109
109
  break;
110
110
  default:
111
- return rxml_node_wrap(xpop->nodesetval->nodeTab[apos]);
111
+ return rxml_node_wrap(xpop->nodesetval->nodeTab[index]);
112
112
  }
113
113
  }
114
114
 
Binary file
Binary file
data/lib/libxml.rb CHANGED
@@ -7,7 +7,6 @@ begin
7
7
  rescue LoadError
8
8
  require "libxml_ruby"
9
9
  end
10
-
11
10
  # Load Ruby supporting code.
12
11
  require 'libxml/error'
13
12
  require 'libxml/parser'
data/lib/libxml/node.rb CHANGED
@@ -55,7 +55,7 @@ module LibXML
55
55
  raise(TypeError, "A node must belong to a document before a xpath context can be created")
56
56
  end
57
57
 
58
- context = XPath::Context.new(self)
58
+ context = XPath::Context.new(self.doc)
59
59
  context.node = self
60
60
  context.register_namespaces_from_node(self)
61
61
  context.register_namespaces_from_node(self.doc.root)
data/lib/xml.rb CHANGED
@@ -11,6 +11,4 @@
11
11
  # app/libs namespace.
12
12
 
13
13
  require 'libxml'
14
-
15
- include LibXML
16
-
14
+ include LibXML
@@ -0,0 +1,915 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <kml xmlns="http://earth.google.com/kml/2.2">
3
+ <Document>
4
+ <name>KML Samples</name>
5
+ <open>1</open>
6
+ <description>Unleash your creativity with the help of these examples!</description>
7
+ <Style id="downArrowIcon">
8
+ <IconStyle>
9
+ <Icon>
10
+ <href>http://maps.google.com/mapfiles/kml/pal4/icon28.png</href>
11
+ </Icon>
12
+ </IconStyle>
13
+ </Style>
14
+ <Style id="globeIcon">
15
+ <IconStyle>
16
+ <Icon>
17
+ <href>http://maps.google.com/mapfiles/kml/pal3/icon19.png</href>
18
+ </Icon>
19
+ </IconStyle>
20
+ <LineStyle>
21
+ <width>2</width>
22
+ </LineStyle>
23
+ </Style>
24
+ <Style id="transPurpleLineGreenPoly">
25
+ <LineStyle>
26
+ <color>7fff00ff</color>
27
+ <width>4</width>
28
+ </LineStyle>
29
+ <PolyStyle>
30
+ <color>7f00ff00</color>
31
+ </PolyStyle>
32
+ </Style>
33
+ <Style id="yellowLineGreenPoly">
34
+ <LineStyle>
35
+ <color>7f00ffff</color>
36
+ <width>4</width>
37
+ </LineStyle>
38
+ <PolyStyle>
39
+ <color>7f00ff00</color>
40
+ </PolyStyle>
41
+ </Style>
42
+ <Style id="thickBlackLine">
43
+ <LineStyle>
44
+ <color>87000000</color>
45
+ <width>10</width>
46
+ </LineStyle>
47
+ </Style>
48
+ <Style id="redLineBluePoly">
49
+ <LineStyle>
50
+ <color>ff0000ff</color>
51
+ </LineStyle>
52
+ <PolyStyle>
53
+ <color>ffff0000</color>
54
+ </PolyStyle>
55
+ </Style>
56
+ <Style id="blueLineRedPoly">
57
+ <LineStyle>
58
+ <color>ffff0000</color>
59
+ </LineStyle>
60
+ <PolyStyle>
61
+ <color>ff0000ff</color>
62
+ </PolyStyle>
63
+ </Style>
64
+ <Style id="transRedPoly">
65
+ <LineStyle>
66
+ <width>1.5</width>
67
+ </LineStyle>
68
+ <PolyStyle>
69
+ <color>7d0000ff</color>
70
+ </PolyStyle>
71
+ </Style>
72
+ <Style id="transBluePoly">
73
+ <LineStyle>
74
+ <width>1.5</width>
75
+ </LineStyle>
76
+ <PolyStyle>
77
+ <color>7dff0000</color>
78
+ </PolyStyle>
79
+ </Style>
80
+ <Style id="transGreenPoly">
81
+ <LineStyle>
82
+ <width>1.5</width>
83
+ </LineStyle>
84
+ <PolyStyle>
85
+ <color>7d00ff00</color>
86
+ </PolyStyle>
87
+ </Style>
88
+ <Style id="transYellowPoly">
89
+ <LineStyle>
90
+ <width>1.5</width>
91
+ </LineStyle>
92
+ <PolyStyle>
93
+ <color>7d00ffff</color>
94
+ </PolyStyle>
95
+ </Style>
96
+ <Style id="noDrivingDirections">
97
+ <BalloonStyle>
98
+ <text><![CDATA[
99
+ <b>$[name]</b>
100
+ <br /><br />
101
+ $[description]
102
+ ]]></text>
103
+ </BalloonStyle>
104
+ </Style>
105
+ <Folder>
106
+ <name>Placemarks</name>
107
+ <description>These are just some of the different kinds of placemarks with
108
+ which you can mark your favorite places</description>
109
+ <LookAt>
110
+ <longitude>-122.0839597145766</longitude>
111
+ <latitude>37.42222904525232</latitude>
112
+ <altitude>0</altitude>
113
+ <range>500.6566641072245</range>
114
+ <tilt>40.5575073395506</tilt>
115
+ <heading>-148.4122922628044</heading>
116
+ </LookAt>
117
+ <Placemark>
118
+ <name>Simple placemark</name>
119
+ <description>Attached to the ground. Intelligently places itself at the
120
+ height of the underlying terrain.</description>
121
+ <Point>
122
+ <coordinates>-122.0822035425683,37.42228990140251,0</coordinates>
123
+ </Point>
124
+ </Placemark>
125
+ <Placemark>
126
+ <name>Floating placemark</name>
127
+ <visibility>0</visibility>
128
+ <description>Floats a defined distance above the ground.</description>
129
+ <LookAt>
130
+ <longitude>-122.0839597145766</longitude>
131
+ <latitude>37.42222904525232</latitude>
132
+ <altitude>0</altitude>
133
+ <range>500.6566641072245</range>
134
+ <tilt>40.5575073395506</tilt>
135
+ <heading>-148.4122922628044</heading>
136
+ </LookAt>
137
+ <styleUrl>#downArrowIcon</styleUrl>
138
+ <Point>
139
+ <altitudeMode>relativeToGround</altitudeMode>
140
+ <coordinates>-122.084075,37.4220033612141,50</coordinates>
141
+ </Point>
142
+ </Placemark>
143
+ <Placemark>
144
+ <name>Extruded placemark</name>
145
+ <visibility>0</visibility>
146
+ <description>Tethered to the ground by a customizable
147
+ &quot;tail&quot;</description>
148
+ <LookAt>
149
+ <longitude>-122.0845787421525</longitude>
150
+ <latitude>37.42215078737763</latitude>
151
+ <altitude>0</altitude>
152
+ <range>365.2646606980322</range>
153
+ <tilt>40.55750733918048</tilt>
154
+ <heading>-148.4126684946234</heading>
155
+ </LookAt>
156
+ <styleUrl>#globeIcon</styleUrl>
157
+ <Point>
158
+ <extrude>1</extrude>
159
+ <altitudeMode>relativeToGround</altitudeMode>
160
+ <coordinates>-122.0857667006183,37.42156927867553,50</coordinates>
161
+ </Point>
162
+ </Placemark>
163
+ </Folder>
164
+ <Folder>
165
+ <name>Styles and Markup</name>
166
+ <visibility>0</visibility>
167
+ <description>With KML it is easy to create rich, descriptive markup to
168
+ annotate and enrich your placemarks</description>
169
+ <LookAt>
170
+ <longitude>-122.0845787422371</longitude>
171
+ <latitude>37.42215078726837</latitude>
172
+ <altitude>0</altitude>
173
+ <range>365.2646826292919</range>
174
+ <tilt>40.55750733930874</tilt>
175
+ <heading>-148.4126777488172</heading>
176
+ </LookAt>
177
+ <styleUrl>#noDrivingDirections</styleUrl>
178
+ <Document>
179
+ <name>Highlighted Icon</name>
180
+ <visibility>0</visibility>
181
+ <description>Place your mouse over the icon to see it display the new
182
+ icon</description>
183
+ <LookAt>
184
+ <longitude>-122.0856552124024</longitude>
185
+ <latitude>37.4224281311035</latitude>
186
+ <altitude>0</altitude>
187
+ <range>265.8520424250024</range>
188
+ <tilt>0</tilt>
189
+ <heading>0</heading>
190
+ </LookAt>
191
+ <Style id="highlightPlacemark">
192
+ <IconStyle>
193
+ <Icon>
194
+ <href>http://maps.google.com/mapfiles/kml/paddle/red-stars.png</href>
195
+ </Icon>
196
+ </IconStyle>
197
+ </Style>
198
+ <Style id="normalPlacemark">
199
+ <IconStyle>
200
+ <Icon>
201
+ <href>http://maps.google.com/mapfiles/kml/paddle/wht-blank.png</href>
202
+ </Icon>
203
+ </IconStyle>
204
+ </Style>
205
+ <StyleMap id="exampleStyleMap">
206
+ <Pair>
207
+ <key>normal</key>
208
+ <styleUrl>#normalPlacemark</styleUrl>
209
+ </Pair>
210
+ <Pair>
211
+ <key>highlight</key>
212
+ <styleUrl>#highlightPlacemark</styleUrl>
213
+ </Pair>
214
+ </StyleMap>
215
+ <Placemark>
216
+ <name>Roll over this icon</name>
217
+ <visibility>0</visibility>
218
+ <styleUrl>#exampleStyleMap</styleUrl>
219
+ <Point>
220
+ <coordinates>-122.0856545755255,37.42243077405461,0</coordinates>
221
+ </Point>
222
+ </Placemark>
223
+ </Document>
224
+ <Placemark>
225
+ <name>Descriptive HTML</name>
226
+ <visibility>0</visibility>
227
+ <description><![CDATA[Click on the blue link!<br><br>
228
+ Placemark descriptions can be enriched by using many standard HTML tags.<br>
229
+ For example:
230
+ <hr>
231
+ Styles:<br>
232
+ <i>Italics</i>,
233
+ <b>Bold</b>,
234
+ <u>Underlined</u>,
235
+ <s>Strike Out</s>,
236
+ subscript<sub>subscript</sub>,
237
+ superscript<sup>superscript</sup>,
238
+ <big>Big</big>,
239
+ <small>Small</small>,
240
+ <tt>Typewriter</tt>,
241
+ <em>Emphasized</em>,
242
+ <strong>Strong</strong>,
243
+ <code>Code</code>
244
+ <hr>
245
+ Fonts:<br>
246
+ <font color="red">red by name</font>,
247
+ <font color="#408010">leaf green by hexadecimal RGB</font>
248
+ <br>
249
+ <font size=1>size 1</font>,
250
+ <font size=2>size 2</font>,
251
+ <font size=3>size 3</font>,
252
+ <font size=4>size 4</font>,
253
+ <font size=5>size 5</font>,
254
+ <font size=6>size 6</font>,
255
+ <font size=7>size 7</font>
256
+ <br>
257
+ <font face=times>Times</font>,
258
+ <font face=verdana>Verdana</font>,
259
+ <font face=arial>Arial</font><br>
260
+ <hr>
261
+ Links:
262
+ <br>
263
+ <a href="http://earth.google.com/">Google Earth!</a>
264
+ <br>
265
+ or: Check out our website at www.google.com
266
+ <hr>
267
+ Alignment:<br>
268
+ <p align=left>left</p>
269
+ <p align=center>center</p>
270
+ <p align=right>right</p>
271
+ <hr>
272
+ Ordered Lists:<br>
273
+ <ol><li>First</li><li>Second</li><li>Third</li></ol>
274
+ <ol type="a"><li>First</li><li>Second</li><li>Third</li></ol>
275
+ <ol type="A"><li>First</li><li>Second</li><li>Third</li></ol>
276
+ <hr>
277
+ Unordered Lists:<br>
278
+ <ul><li>A</li><li>B</li><li>C</li></ul>
279
+ <ul type="circle"><li>A</li><li>B</li><li>C</li></ul>
280
+ <ul type="square"><li>A</li><li>B</li><li>C</li></ul>
281
+ <hr>
282
+ Definitions:<br>
283
+ <dl>
284
+ <dt>Google:</dt><dd>The best thing since sliced bread</dd>
285
+ </dl>
286
+ <hr>
287
+ Centered:<br><center>
288
+ Time present and time past<br>
289
+ Are both perhaps present in time future,<br>
290
+ And time future contained in time past.<br>
291
+ If all time is eternally present<br>
292
+ All time is unredeemable.<br>
293
+ </center>
294
+ <hr>
295
+ Block Quote:
296
+ <br>
297
+ <blockquote>
298
+ We shall not cease from exploration<br>
299
+ And the end of all our exploring<br>
300
+ Will be to arrive where we started<br>
301
+ And know the place for the first time.<br>
302
+ <i>-- T.S. Eliot</i>
303
+ </blockquote>
304
+ <br>
305
+ <hr>
306
+ Headings:<br>
307
+ <h1>Header 1</h1>
308
+ <h2>Header 2</h2>
309
+ <h3>Header 3</h3>
310
+ <h3>Header 4</h4>
311
+ <h3>Header 5</h5>
312
+ <hr>
313
+ Images:<br>
314
+ <i>Remote image</i><br>
315
+ <img src="http://code.google.com/apis/kml/documentation/googleSample.png"><br>
316
+ <i>Scaled image</i><br>
317
+ <img src="http://code.google.com/apis/kml/documentation/googleSample.png" width=100><br>
318
+ <hr>
319
+ Simple Tables:<br>
320
+ <table border="1" padding="1">
321
+ <tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td></tr>
322
+ <tr><td>a</td><td>b</td><td>c</td><td>d</td><td>e</td></tr>
323
+ </table>
324
+ <br>
325
+ [Did you notice that double-clicking on the placemark doesn't cause the viewer to take you anywhere? This is because it is possible to directly author a "placeless placemark". If you look at the code for this example, you will see that it has neither a point coordinate nor a LookAt element.]]]></description>
326
+ </Placemark>
327
+ </Folder>
328
+ <Folder>
329
+ <name>Ground Overlays</name>
330
+ <visibility>0</visibility>
331
+ <description>Examples of ground overlays</description>
332
+ <GroundOverlay>
333
+ <name>Large-scale overlay on terrain</name>
334
+ <visibility>0</visibility>
335
+ <description>Overlay shows Mount Etna erupting on July 13th, 2001.</description>
336
+ <LookAt>
337
+ <longitude>15.02468937557116</longitude>
338
+ <latitude>37.67395167941667</latitude>
339
+ <altitude>0</altitude>
340
+ <range>30350.36838438907</range>
341
+ <tilt>58.31228652890705</tilt>
342
+ <heading>-16.5581842842829</heading>
343
+ </LookAt>
344
+ <Icon>
345
+ <href>http://code.google.com/apis/kml/documentation/etna.jpg</href>
346
+ </Icon>
347
+ <LatLonBox>
348
+ <north>37.91904192681665</north>
349
+ <south>37.46543388598137</south>
350
+ <east>15.35832653742206</east>
351
+ <west>14.60128369746704</west>
352
+ <rotation>-0.1556640799496235</rotation>
353
+ </LatLonBox>
354
+ </GroundOverlay>
355
+ </Folder>
356
+ <Folder>
357
+ <name>Screen Overlays</name>
358
+ <visibility>0</visibility>
359
+ <description>Screen overlays have to be authored directly in KML. These
360
+ examples illustrate absolute and dynamic positioning in screen space.</description>
361
+ <ScreenOverlay>
362
+ <name>Simple crosshairs</name>
363
+ <visibility>0</visibility>
364
+ <description>This screen overlay uses fractional positioning to put the
365
+ image in the exact center of the screen</description>
366
+ <Icon>
367
+ <href>http://code.google.com/apis/kml/documentation/crosshairs.png</href>
368
+ </Icon>
369
+ <overlayXY x="0.5" y="0.5" xunits="fraction" yunits="fraction"/>
370
+ <screenXY x="0.5" y="0.5" xunits="fraction" yunits="fraction"/>
371
+ <rotationXY x="0.5" y="0.5" xunits="fraction" yunits="fraction"/>
372
+ <size x="0" y="0" xunits="pixels" yunits="pixels"/>
373
+ </ScreenOverlay>
374
+ <ScreenOverlay>
375
+ <name>Absolute Positioning: Top left</name>
376
+ <visibility>0</visibility>
377
+ <Icon>
378
+ <href>http://code.google.com/apis/kml/documentation/top_left.jpg</href>
379
+ </Icon>
380
+ <overlayXY x="0" y="1" xunits="fraction" yunits="fraction"/>
381
+ <screenXY x="0" y="1" xunits="fraction" yunits="fraction"/>
382
+ <rotationXY x="0" y="0" xunits="fraction" yunits="fraction"/>
383
+ <size x="0" y="0" xunits="fraction" yunits="fraction"/>
384
+ </ScreenOverlay>
385
+ <ScreenOverlay>
386
+ <name>Absolute Positioning: Top right</name>
387
+ <visibility>0</visibility>
388
+ <Icon>
389
+ <href>http://code.google.com/apis/kml/documentation/top_right.jpg</href>
390
+ </Icon>
391
+ <overlayXY x="1" y="1" xunits="fraction" yunits="fraction"/>
392
+ <screenXY x="1" y="1" xunits="fraction" yunits="fraction"/>
393
+ <rotationXY x="0" y="0" xunits="fraction" yunits="fraction"/>
394
+ <size x="0" y="0" xunits="fraction" yunits="fraction"/>
395
+ </ScreenOverlay>
396
+ <ScreenOverlay>
397
+ <name>Absolute Positioning: Bottom left</name>
398
+ <visibility>0</visibility>
399
+ <Icon>
400
+ <href>http://code.google.com/apis/kml/documentation/bottom_left.jpg</href>
401
+ </Icon>
402
+ <overlayXY x="0" y="-1" xunits="fraction" yunits="fraction"/>
403
+ <screenXY x="0" y="0" xunits="fraction" yunits="fraction"/>
404
+ <rotationXY x="0" y="0" xunits="fraction" yunits="fraction"/>
405
+ <size x="0" y="0" xunits="fraction" yunits="fraction"/>
406
+ </ScreenOverlay>
407
+ <ScreenOverlay>
408
+ <name>Absolute Positioning: Bottom right</name>
409
+ <visibility>0</visibility>
410
+ <Icon>
411
+ <href>http://code.google.com/apis/kml/documentation/bottom_right.jpg</href>
412
+ </Icon>
413
+ <overlayXY x="1" y="-1" xunits="fraction" yunits="fraction"/>
414
+ <screenXY x="1" y="0" xunits="fraction" yunits="fraction"/>
415
+ <rotationXY x="0" y="0" xunits="fraction" yunits="fraction"/>
416
+ <size x="0" y="0" xunits="fraction" yunits="fraction"/>
417
+ </ScreenOverlay>
418
+ <ScreenOverlay>
419
+ <name>Dynamic Positioning: Top of screen</name>
420
+ <visibility>0</visibility>
421
+ <Icon>
422
+ <href>http://code.google.com/apis/kml/documentation/dynamic_screenoverlay.jpg</href>
423
+ </Icon>
424
+ <overlayXY x="0" y="1" xunits="fraction" yunits="fraction"/>
425
+ <screenXY x="0" y="1" xunits="fraction" yunits="fraction"/>
426
+ <rotationXY x="0" y="0" xunits="fraction" yunits="fraction"/>
427
+ <size x="1" y="0.2" xunits="fraction" yunits="fraction"/>
428
+ </ScreenOverlay>
429
+ <ScreenOverlay>
430
+ <name>Dynamic Positioning: Right of screen</name>
431
+ <visibility>0</visibility>
432
+ <Icon>
433
+ <href>http://code.google.com/apis/kml/documentation/dynamic_right.jpg</href>
434
+ </Icon>
435
+ <overlayXY x="1" y="1" xunits="fraction" yunits="fraction"/>
436
+ <screenXY x="1" y="1" xunits="fraction" yunits="fraction"/>
437
+ <rotationXY x="0" y="0" xunits="fraction" yunits="fraction"/>
438
+ <size x="0" y="1" xunits="fraction" yunits="fraction"/>
439
+ </ScreenOverlay>
440
+ </Folder>
441
+ <Folder>
442
+ <name>Paths</name>
443
+ <visibility>0</visibility>
444
+ <description>Examples of paths. Note that the tessellate tag is by default
445
+ set to 0. If you want to create tessellated lines, they must be authored
446
+ (or edited) directly in KML.</description>
447
+ <Placemark>
448
+ <name>Tessellated</name>
449
+ <visibility>0</visibility>
450
+ <description><![CDATA[If the <tessellate> tag has a value of 1, the line will contour to the underlying terrain]]></description>
451
+ <LookAt>
452
+ <longitude>-112.0822680013139</longitude>
453
+ <latitude>36.09825589333556</latitude>
454
+ <altitude>0</altitude>
455
+ <range>2889.145007690472</range>
456
+ <tilt>62.04855796276328</tilt>
457
+ <heading>103.8120432044965</heading>
458
+ </LookAt>
459
+ <LineString>
460
+ <tessellate>1</tessellate>
461
+ <coordinates> -112.0814237830345,36.10677870477137,0
462
+ -112.0870267752693,36.0905099328766,0 </coordinates>
463
+ </LineString>
464
+ </Placemark>
465
+ <Placemark>
466
+ <name>Untessellated</name>
467
+ <visibility>0</visibility>
468
+ <description><![CDATA[If the <tessellate> tag has a value of 0, the line follow a simple straight-line path from point to point]]></description>
469
+ <LookAt>
470
+ <longitude>-112.0822680013139</longitude>
471
+ <latitude>36.09825589333556</latitude>
472
+ <altitude>0</altitude>
473
+ <range>2889.145007690472</range>
474
+ <tilt>62.04855796276328</tilt>
475
+ <heading>103.8120432044965</heading>
476
+ </LookAt>
477
+ <LineString>
478
+ <tessellate>0</tessellate>
479
+ <coordinates> -112.080622229595,36.10673460007995,0
480
+ -112.085242575315,36.09049598612422,0 </coordinates>
481
+ </LineString>
482
+ </Placemark>
483
+ <Placemark>
484
+ <name>Absolute</name>
485
+ <visibility>0</visibility>
486
+ <description>Transparent purple line</description>
487
+ <LookAt>
488
+ <longitude>-112.2719329043177</longitude>
489
+ <latitude>36.08890633450894</latitude>
490
+ <altitude>0</altitude>
491
+ <range>2569.386744398339</range>
492
+ <tilt>44.60763714063257</tilt>
493
+ <heading>-106.8161545998597</heading>
494
+ </LookAt>
495
+ <styleUrl>#transPurpleLineGreenPoly</styleUrl>
496
+ <LineString>
497
+ <tessellate>1</tessellate>
498
+ <altitudeMode>absolute</altitudeMode>
499
+ <coordinates> -112.265654928602,36.09447672602546,2357
500
+ -112.2660384528238,36.09342608838671,2357
501
+ -112.2668139013453,36.09251058776881,2357
502
+ -112.2677826834445,36.09189827357996,2357
503
+ -112.2688557510952,36.0913137941187,2357
504
+ -112.2694810717219,36.0903677207521,2357
505
+ -112.2695268555611,36.08932171487285,2357
506
+ -112.2690144567276,36.08850916060472,2357
507
+ -112.2681528815339,36.08753813597956,2357
508
+ -112.2670588176031,36.08682685262568,2357
509
+ -112.2657374587321,36.08646312301303,2357 </coordinates>
510
+ </LineString>
511
+ </Placemark>
512
+ <Placemark>
513
+ <name>Absolute Extruded</name>
514
+ <visibility>0</visibility>
515
+ <description>Transparent green wall with yellow outlines</description>
516
+ <LookAt>
517
+ <longitude>-112.2643334742529</longitude>
518
+ <latitude>36.08563154742419</latitude>
519
+ <altitude>0</altitude>
520
+ <range>4451.842204068102</range>
521
+ <tilt>44.61038665812578</tilt>
522
+ <heading>-125.7518698668815</heading>
523
+ </LookAt>
524
+ <styleUrl>#yellowLineGreenPoly</styleUrl>
525
+ <LineString>
526
+ <extrude>1</extrude>
527
+ <tessellate>1</tessellate>
528
+ <altitudeMode>absolute</altitudeMode>
529
+ <coordinates> -112.2550785337791,36.07954952145647,2357
530
+ -112.2549277039738,36.08117083492122,2357
531
+ -112.2552505069063,36.08260761307279,2357
532
+ -112.2564540158376,36.08395660588506,2357
533
+ -112.2580238976449,36.08511401044813,2357
534
+ -112.2595218489022,36.08584355239394,2357
535
+ -112.2608216347552,36.08612634548589,2357
536
+ -112.262073428656,36.08626019085147,2357
537
+ -112.2633204928495,36.08621519860091,2357
538
+ -112.2644963846444,36.08627897945274,2357
539
+ -112.2656969554589,36.08649599090644,2357 </coordinates>
540
+ </LineString>
541
+ </Placemark>
542
+ <Placemark>
543
+ <name>Relative</name>
544
+ <visibility>0</visibility>
545
+ <description>Black line (10 pixels wide), height tracks terrain</description>
546
+ <LookAt>
547
+ <longitude>-112.2580438551384</longitude>
548
+ <latitude>36.1072674824385</latitude>
549
+ <altitude>0</altitude>
550
+ <range>2927.61105910266</range>
551
+ <tilt>44.61324882043339</tilt>
552
+ <heading>4.947421249553717</heading>
553
+ </LookAt>
554
+ <styleUrl>#thickBlackLine</styleUrl>
555
+ <LineString>
556
+ <tessellate>1</tessellate>
557
+ <altitudeMode>relativeToGround</altitudeMode>
558
+ <coordinates> -112.2532845153347,36.09886943729116,645
559
+ -112.2540466121145,36.09919570465255,645
560
+ -112.254734666947,36.09984998366178,645
561
+ -112.255493345654,36.10051310621746,645
562
+ -112.2563157098468,36.10108441943419,645
563
+ -112.2568033076439,36.10159722088088,645
564
+ -112.257494011321,36.10204323542867,645
565
+ -112.2584106072308,36.10229131995655,645
566
+ -112.2596588987972,36.10240001286358,645
567
+ -112.2610581199487,36.10213176873407,645
568
+ -112.2626285262793,36.10157011437219,645 </coordinates>
569
+ </LineString>
570
+ </Placemark>
571
+ <Placemark>
572
+ <name>Relative Extruded</name>
573
+ <visibility>0</visibility>
574
+ <description>Opaque blue walls with red outline, height tracks terrain</description>
575
+ <LookAt>
576
+ <longitude>-112.2683594333433</longitude>
577
+ <latitude>36.09884362144909</latitude>
578
+ <altitude>0</altitude>
579
+ <range>2184.193522571467</range>
580
+ <tilt>44.60855445139561</tilt>
581
+ <heading>-72.24271551768405</heading>
582
+ </LookAt>
583
+ <styleUrl>#redLineBluePoly</styleUrl>
584
+ <LineString>
585
+ <extrude>1</extrude>
586
+ <tessellate>1</tessellate>
587
+ <altitudeMode>relativeToGround</altitudeMode>
588
+ <coordinates> -112.2656634181359,36.09445214722695,630
589
+ -112.2652238941097,36.09520916122063,630
590
+ -112.2645079986395,36.09580763864907,630
591
+ -112.2638827428817,36.09628572284063,630
592
+ -112.2635746835406,36.09679275951239,630
593
+ -112.2635711822407,36.09740038871899,630
594
+ -112.2640296531825,36.09804913435539,630
595
+ -112.264327720538,36.09880337400301,630
596
+ -112.2642436562271,36.09963644790288,630
597
+ -112.2639148687042,36.10055381117246,630
598
+ -112.2626894973474,36.10149062823369,630 </coordinates>
599
+ </LineString>
600
+ </Placemark>
601
+ </Folder>
602
+ <Folder>
603
+ <name>Polygons</name>
604
+ <visibility>0</visibility>
605
+ <description>Examples of polygon shapes</description>
606
+ <Folder>
607
+ <name>Google Campus</name>
608
+ <visibility>0</visibility>
609
+ <description>A collection showing how easy it is to create 3-dimensional
610
+ buildings</description>
611
+ <LookAt>
612
+ <longitude>-122.084120030116</longitude>
613
+ <latitude>37.42174011925477</latitude>
614
+ <altitude>0</altitude>
615
+ <range>276.7870053764046</range>
616
+ <tilt>53.454348562403</tilt>
617
+ <heading>-34.82469740081282</heading>
618
+ </LookAt>
619
+ <Placemark>
620
+ <name>Building 40</name>
621
+ <visibility>0</visibility>
622
+ <styleUrl>#transRedPoly</styleUrl>
623
+ <Polygon>
624
+ <extrude>1</extrude>
625
+ <altitudeMode>relativeToGround</altitudeMode>
626
+ <outerBoundaryIs>
627
+ <LinearRing>
628
+ <coordinates> -122.0848938459612,37.42257124044786,17
629
+ -122.0849580979198,37.42211922626856,17
630
+ -122.0847469573047,37.42207183952619,17
631
+ -122.0845725380962,37.42209006729676,17
632
+ -122.0845954886723,37.42215932700895,17
633
+ -122.0838521118269,37.42227278564371,17
634
+ -122.083792243335,37.42203539112084,17
635
+ -122.0835076656616,37.42209006957106,17
636
+ -122.0834709464152,37.42200987395161,17
637
+ -122.0831221085748,37.4221046494946,17
638
+ -122.0829247374572,37.42226503990386,17
639
+ -122.0829339169385,37.42231242843094,17
640
+ -122.0833837359737,37.42225046087618,17
641
+ -122.0833607854248,37.42234159228745,17
642
+ -122.0834204551642,37.42237075460644,17
643
+ -122.083659133885,37.42251292011001,17
644
+ -122.0839758438952,37.42265873093781,17
645
+ -122.0842374743331,37.42265143972521,17
646
+ -122.0845036949503,37.4226514386435,17
647
+ -122.0848020460801,37.42261133916315,17
648
+ -122.0847882750515,37.42256395055121,17
649
+ -122.0848938459612,37.42257124044786,17 </coordinates>
650
+ </LinearRing>
651
+ </outerBoundaryIs>
652
+ </Polygon>
653
+ </Placemark>
654
+ <Placemark>
655
+ <name>Building 41</name>
656
+ <visibility>0</visibility>
657
+ <styleUrl>#transBluePoly</styleUrl>
658
+ <Polygon>
659
+ <extrude>1</extrude>
660
+ <altitudeMode>relativeToGround</altitudeMode>
661
+ <outerBoundaryIs>
662
+ <LinearRing>
663
+ <coordinates> -122.0857412771483,37.42227033155257,17
664
+ -122.0858169768481,37.42231408832346,17
665
+ -122.085852582875,37.42230337469744,17
666
+ -122.0858799945639,37.42225686138789,17
667
+ -122.0858860101409,37.4222311076138,17
668
+ -122.0858069157288,37.42220250173855,17
669
+ -122.0858379542653,37.42214027058678,17
670
+ -122.0856732640519,37.42208690214408,17
671
+ -122.0856022926407,37.42214885429042,17
672
+ -122.0855902778436,37.422128290487,17
673
+ -122.0855841672237,37.42208171967246,17
674
+ -122.0854852065741,37.42210455874995,17
675
+ -122.0855067264352,37.42214267949824,17
676
+ -122.0854430712915,37.42212783846172,17
677
+ -122.0850990714904,37.42251282407603,17
678
+ -122.0856769818632,37.42281815323651,17
679
+ -122.0860162273783,37.42244918858722,17
680
+ -122.0857260327004,37.42229239604253,17
681
+ -122.0857412771483,37.42227033155257,17 </coordinates>
682
+ </LinearRing>
683
+ </outerBoundaryIs>
684
+ </Polygon>
685
+ </Placemark>
686
+ <Placemark>
687
+ <name>Building 42</name>
688
+ <visibility>0</visibility>
689
+ <styleUrl>#transGreenPoly</styleUrl>
690
+ <Polygon>
691
+ <extrude>1</extrude>
692
+ <altitudeMode>relativeToGround</altitudeMode>
693
+ <outerBoundaryIs>
694
+ <LinearRing>
695
+ <coordinates> -122.0857862287242,37.42136208886969,25
696
+ -122.0857312990603,37.42136935989481,25
697
+ -122.0857312992918,37.42140934910903,25
698
+ -122.0856077073679,37.42138390166565,25
699
+ -122.0855802426516,37.42137299550869,25
700
+ -122.0852186221971,37.42137299504316,25
701
+ -122.0852277765639,37.42161656508265,25
702
+ -122.0852598189347,37.42160565894403,25
703
+ -122.0852598185499,37.42168200156,25
704
+ -122.0852369311478,37.42170017860346,25
705
+ -122.0852643957828,37.42176197982575,25
706
+ -122.0853239032746,37.42176198013907,25
707
+ -122.0853559454324,37.421852864452,25
708
+ -122.0854108752463,37.42188921823734,25
709
+ -122.0854795379357,37.42189285337048,25
710
+ -122.0855436229819,37.42188921797546,25
711
+ -122.0856260178042,37.42186013499926,25
712
+ -122.085937287963,37.42186013453605,25
713
+ -122.0859428718666,37.42160898590042,25
714
+ -122.0859655469861,37.42157992759144,25
715
+ -122.0858640462341,37.42147115002957,25
716
+ -122.0858548911215,37.42140571326184,25
717
+ -122.0858091162768,37.4214057134039,25
718
+ -122.0857862287242,37.42136208886969,25 </coordinates>
719
+ </LinearRing>
720
+ </outerBoundaryIs>
721
+ </Polygon>
722
+ </Placemark>
723
+ <Placemark>
724
+ <name>Building 43</name>
725
+ <visibility>0</visibility>
726
+ <styleUrl>#transYellowPoly</styleUrl>
727
+ <Polygon>
728
+ <extrude>1</extrude>
729
+ <altitudeMode>relativeToGround</altitudeMode>
730
+ <outerBoundaryIs>
731
+ <LinearRing>
732
+ <coordinates> -122.0844371128284,37.42177253003091,19
733
+ -122.0845118855746,37.42191111542896,19
734
+ -122.0850470999805,37.42178755121535,19
735
+ -122.0850719913391,37.42143663023161,19
736
+ -122.084916406232,37.42137237822116,19
737
+ -122.0842193868167,37.42137237801626,19
738
+ -122.08421938659,37.42147617161496,19
739
+ -122.0838086419991,37.4214613409357,19
740
+ -122.0837899728564,37.42131306410796,19
741
+ -122.0832796534698,37.42129328840593,19
742
+ -122.0832609819207,37.42139213944298,19
743
+ -122.0829373621737,37.42137236399876,19
744
+ -122.0829062425667,37.42151569778871,19
745
+ -122.0828502269665,37.42176282576465,19
746
+ -122.0829435788635,37.42176776969635,19
747
+ -122.083217411188,37.42179248552686,19
748
+ -122.0835970430103,37.4217480074456,19
749
+ -122.0839455556771,37.42169364237603,19
750
+ -122.0840077894637,37.42176283815853,19
751
+ -122.084113587521,37.42174801104392,19
752
+ -122.0840762473784,37.42171341292375,19
753
+ -122.0841447047739,37.42167881534569,19
754
+ -122.084144704223,37.42181720660197,19
755
+ -122.0842503333074,37.4218170700446,19
756
+ -122.0844371128284,37.42177253003091,19 </coordinates>
757
+ </LinearRing>
758
+ </outerBoundaryIs>
759
+ </Polygon>
760
+ </Placemark>
761
+ </Folder>
762
+ <Folder>
763
+ <name>Extruded Polygon</name>
764
+ <description>A simple way to model a building</description>
765
+ <Placemark>
766
+ <name>The Pentagon</name>
767
+ <LookAt>
768
+ <longitude>-77.05580139178142</longitude>
769
+ <latitude>38.870832443487</latitude>
770
+ <range>742.0552506670548</range>
771
+ <tilt>48.09646074797388</tilt>
772
+ <heading>59.88865561738225</heading>
773
+ </LookAt>
774
+ <Polygon>
775
+ <extrude>1</extrude>
776
+ <altitudeMode>relativeToGround</altitudeMode>
777
+ <outerBoundaryIs>
778
+ <LinearRing>
779
+ <coordinates> -77.05788457660967,38.87253259892824,100
780
+ -77.05465973756702,38.87291016281703,100
781
+ -77.05315536854791,38.87053267794386,100
782
+ -77.05552622493516,38.868757801256,100
783
+ -77.05844056290393,38.86996206506943,100
784
+ -77.05788457660967,38.87253259892824,100 </coordinates>
785
+ </LinearRing>
786
+ </outerBoundaryIs>
787
+ <innerBoundaryIs>
788
+ <LinearRing>
789
+ <coordinates> -77.05668055019126,38.87154239798456,100
790
+ -77.05542625960818,38.87167890344077,100
791
+ -77.05485125901024,38.87076535397792,100
792
+ -77.05577677433152,38.87008686581446,100
793
+ -77.05691162017543,38.87054446963351,100
794
+ -77.05668055019126,38.87154239798456,100 </coordinates>
795
+ </LinearRing>
796
+ </innerBoundaryIs>
797
+ </Polygon>
798
+ </Placemark>
799
+ </Folder>
800
+ <Folder>
801
+ <name>Absolute and Relative</name>
802
+ <visibility>0</visibility>
803
+ <description>Four structures whose roofs meet exactly. Turn on/off
804
+ terrain to see the difference between relative and absolute
805
+ positioning.</description>
806
+ <LookAt>
807
+ <longitude>-112.3348969157552</longitude>
808
+ <latitude>36.14845533214919</latitude>
809
+ <altitude>0</altitude>
810
+ <range>990.6761201087104</range>
811
+ <tilt>49.30695423894192</tilt>
812
+ <heading>-86.91235037566909</heading>
813
+ </LookAt>
814
+ <Placemark>
815
+ <name>Absolute</name>
816
+ <visibility>0</visibility>
817
+ <styleUrl>#transBluePoly</styleUrl>
818
+ <Polygon>
819
+ <tessellate>1</tessellate>
820
+ <altitudeMode>absolute</altitudeMode>
821
+ <outerBoundaryIs>
822
+ <LinearRing>
823
+ <coordinates> -112.3372510731295,36.14888505105317,1784
824
+ -112.3356128688403,36.14781540589019,1784
825
+ -112.3368169371048,36.14658677734382,1784
826
+ -112.3384408457543,36.14762778914076,1784
827
+ -112.3372510731295,36.14888505105317,1784 </coordinates>
828
+ </LinearRing>
829
+ </outerBoundaryIs>
830
+ </Polygon>
831
+ </Placemark>
832
+ <Placemark>
833
+ <name>Absolute Extruded</name>
834
+ <visibility>0</visibility>
835
+ <styleUrl>#transRedPoly</styleUrl>
836
+ <Polygon>
837
+ <extrude>1</extrude>
838
+ <tessellate>1</tessellate>
839
+ <altitudeMode>absolute</altitudeMode>
840
+ <outerBoundaryIs>
841
+ <LinearRing>
842
+ <coordinates> -112.3396586818843,36.14637618647505,1784
843
+ -112.3380597654315,36.14531751871353,1784
844
+ -112.3368254237788,36.14659596244607,1784
845
+ -112.3384555043203,36.14762621763982,1784
846
+ -112.3396586818843,36.14637618647505,1784 </coordinates>
847
+ </LinearRing>
848
+ </outerBoundaryIs>
849
+ </Polygon>
850
+ </Placemark>
851
+ <Placemark>
852
+ <name>Relative</name>
853
+ <visibility>0</visibility>
854
+ <LookAt>
855
+ <longitude>-112.3350152490417</longitude>
856
+ <latitude>36.14943123077423</latitude>
857
+ <altitude>0</altitude>
858
+ <range>345.5169113679813</range>
859
+ <tilt>37.92486261093203</tilt>
860
+ <heading>-118.9214100848499</heading>
861
+ </LookAt>
862
+ <styleUrl>#transGreenPoly</styleUrl>
863
+ <Polygon>
864
+ <tessellate>1</tessellate>
865
+ <altitudeMode>relativeToGround</altitudeMode>
866
+ <outerBoundaryIs>
867
+ <LinearRing>
868
+ <coordinates> -112.3349463145932,36.14988705767721,100
869
+ -112.3354019540677,36.14941108398372,100
870
+ -112.3344428289146,36.14878490381308,100
871
+ -112.3331289492913,36.14780840132443,100
872
+ -112.3317019516947,36.14680755678357,100
873
+ -112.331131440106,36.1474173426228,100
874
+ -112.332616324338,36.14845453364654,100
875
+ -112.3339876620524,36.14926570522069,100
876
+ -112.3349463145932,36.14988705767721,100 </coordinates>
877
+ </LinearRing>
878
+ </outerBoundaryIs>
879
+ </Polygon>
880
+ </Placemark>
881
+ <Placemark>
882
+ <name>Relative Extruded</name>
883
+ <visibility>0</visibility>
884
+ <LookAt>
885
+ <longitude>-112.3351587892382</longitude>
886
+ <latitude>36.14979247129029</latitude>
887
+ <altitude>0</altitude>
888
+ <range>401.0997279712519</range>
889
+ <tilt>56.10280503739589</tilt>
890
+ <heading>-55.42811560891606</heading>
891
+ </LookAt>
892
+ <styleUrl>#transYellowPoly</styleUrl>
893
+ <Polygon>
894
+ <extrude>1</extrude>
895
+ <tessellate>1</tessellate>
896
+ <altitudeMode>relativeToGround</altitudeMode>
897
+ <outerBoundaryIs>
898
+ <LinearRing>
899
+ <coordinates> -112.3348783983763,36.1514008468736,100
900
+ -112.3372535345629,36.14888517553886,100
901
+ -112.3356068927954,36.14781612679284,100
902
+ -112.3350034807972,36.14846469024177,100
903
+ -112.3358353861232,36.1489624162954,100
904
+ -112.3345888301373,36.15026229372507,100
905
+ -112.3337937856278,36.14978096026463,100
906
+ -112.3331798208424,36.1504472788618,100
907
+ -112.3348783983763,36.1514008468736,100 </coordinates>
908
+ </LinearRing>
909
+ </outerBoundaryIs>
910
+ </Polygon>
911
+ </Placemark>
912
+ </Folder>
913
+ </Folder>
914
+ </Document>
915
+ </kml>