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 +8 -0
- data/ext/libxml/extconf.rb +0 -1
- data/ext/libxml/ruby_xml_document.c +21 -2
- data/ext/libxml/ruby_xml_reader.c +6 -1
- data/ext/libxml/ruby_xml_version.h +3 -3
- data/ext/libxml/ruby_xml_xpath_context.c +4 -15
- data/ext/libxml/ruby_xml_xpath_object.c +11 -11
- data/lib/1.8/libxml_ruby.so +0 -0
- data/lib/1.9/libxml_ruby.so +0 -0
- data/lib/libxml.rb +0 -1
- data/lib/libxml/node.rb +1 -1
- data/lib/xml.rb +1 -3
- data/test/model/kml_sample.xml +915 -0
- data/test/tc_gc.rb +86 -0
- data/test/tc_reader.rb +31 -0
- data/test/tc_xpath.rb +1 -1
- data/test/tc_xpath_context.rb +15 -6
- metadata +7 -4
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).
|
data/ext/libxml/extconf.rb
CHANGED
@@ -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,
|
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,
|
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
|
-
|
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.
|
5
|
-
#define RUBY_LIBXML_VERNUM
|
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
|
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(
|
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
|
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(
|
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
|
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)
|
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
|
94
|
+
static VALUE rxml_xpath_object_tabref(xmlXPathObjectPtr xpop, int index)
|
95
95
|
{
|
96
|
-
if (
|
97
|
-
|
96
|
+
if (index < 0)
|
97
|
+
index = xpop->nodesetval->nodeNr + index;
|
98
98
|
|
99
|
-
if (
|
99
|
+
if (index < 0 || index + 1 > xpop->nodesetval->nodeNr)
|
100
100
|
return Qnil;
|
101
101
|
|
102
|
-
switch (xpop->nodesetval->nodeTab[
|
102
|
+
switch (xpop->nodesetval->nodeTab[index]->type)
|
103
103
|
{
|
104
104
|
case XML_ATTRIBUTE_NODE:
|
105
|
-
return rxml_attr_wrap((xmlAttrPtr) xpop->nodesetval->nodeTab[
|
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[
|
108
|
+
return rxml_namespace_wrap((xmlNsPtr)xpop->nodesetval->nodeTab[index]);
|
109
109
|
break;
|
110
110
|
default:
|
111
|
-
return rxml_node_wrap(xpop->nodesetval->nodeTab[
|
111
|
+
return rxml_node_wrap(xpop->nodesetval->nodeTab[index]);
|
112
112
|
}
|
113
113
|
}
|
114
114
|
|
data/lib/1.8/libxml_ruby.so
CHANGED
Binary file
|
data/lib/1.9/libxml_ruby.so
CHANGED
Binary file
|
data/lib/libxml.rb
CHANGED
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
@@ -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
|
+
"tail"</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>
|