KML 是一种文件格式,用于在地球浏览器(例如 Google 地球、Google 地图和 Google 地图移动版)中显示地理数据。KML 使用包含嵌套的元素和属性的结构(基于标记),并符合 XML 标准。所有标记都区分大小写,并且必须与 KML 参考中列出的完全一样。该参考指出了哪些标记是可选的。在给定元素内,标记必须按照参考中列出的顺序显示。 如果您尚不熟悉 KML,请参见本文档和附带的示例文件(SamplesInEarth 和 SamplesInMaps),开始了解 KML 文件的基本结构和最常用的标记。第一部分介绍了可用 Google 地球用户界面创建的地图项。这些地图项包括地标、说明、地面叠加层、路径和多边形。第二部分介绍了需要用文本编辑器编写 KML 的地图项。如果文本文件是用 .kml 或 .kmz 扩展名保存的,地球浏览器会知道如何显示它。 |
提示:要在 Google 地球中查看某地图项的 KML“代码”,只需在 Google 地球的3D查看器中右键点击该地图项并选择“复制”,然后将剪贴板内容粘贴到任意文本编辑器中即可。Google 地球中显示的可视地图项会转换为对应的 KML 文本。您一定要试试该功能。
此处描述的所有示例都在 KML Samples 文件中。请先下载该文件,然后在 Google 地球中查看这些示例。
更多信息
KML 2.2参考提供了 KML 文件格式的相关详细信息。如果您熟悉 XML,也将会对KML 2.2架构感兴趣。
有关如何使用 KML 中某些主要功能的讨论,请参见《开发者指南》。
目录
基本 KML 文档
最简单的 KML 文档就是可直接在 Google 地球中编写的文档,也就是说您无需在文本编辑器中编辑或创建任何 KML。地标、地面叠加层、路径和多边形都可以直接在 Google 地球中编写。
地标
地标是 Google 地球中最常用的地图项之一。它使用黄色图钉作为图标,在地球表面标记位置。最简单的地标只包含一个 <Point> 元素,用于指定地标的地点。您可以指定地标的名称和自定义图标,还可以为地标添加其他几何元素。
在 Google 地球中打开 KML Samples 文件,并展开“Placemarks”子文件夹。该文件夹包含三种不同类型的地标:“简单”、“浮动”和“凸出”。简单地标的 KML 代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Placemark>
<name>Simple placemark</name>
<description>Attached to the ground. Intelligently places itself at the height of the underlying terrain.</description>
<Point>
<coordinates>-122.0822035425683,37.42228990140251,0</coordinates>
</Point>
</Placemark> </kml>
该文件的结构分解如下:
- XML 标头。这是每个 KML 文件的第1行。该行前面不能有空格或其他字符。
- KML 命名空间声明。这是每个KML 2.2文件的第2行。
- 包含以下元素的地标对象:
- 用作地标标签的名称
- 附着到地标的“提示框”中显示的说明
- 指定地标在地球表面的位置的点 - 经度、纬度和高度(可选)
想知道该地标在哪里?它就在 Google 的41号楼,我们开发 Google 地球的地方!
用户通常认为的 Google 地球中的“地标”,实际上是 KML 中的 <Placemark> 元素,该元素包含一个 <Point> 子元素。点地标是您在 Google 地球的3D查看器中绘制图标和标签的唯一途径。默认情况下,该图标是您所熟悉的黄色图钉。在 KML 中,<Placemark> 可包含一个或多个几何元素,例如 LineString、多边形或模型。但只有具有点的 <Placemark> 可以有图标和标签。点用于放置图标,但点本身并无图形表示。
地标中的描述性 HTML
KML Samples 文件中有一个示例,演示了几乎所有您可对地标文本执行的操作。您可以添加链接、字体大小、样式和颜色,并指定文本对齐方式和表格。如果您希望查看完整的列表,请复制“描述性 HTML”地标示例(在“Styles and Markup”文件夹中)并粘贴至文本编辑器。
Google 地球中的自动标记(版本4.0及更高版本)
Google 地球4.0具有自动标记功能,能将“www.google.com”这样的文本自动转换成用户可点击的有效超链接。<description> 标签、<Snippet> 标签以及 <BalloonStyle> 的 <text> 元素内的文本都会自动转换成标准 HTTP 超链接。您无需自行添加 <a href= ...> 标签。
使用 CDATA 元素
如果您想在 <description> 标签内编写标准的 HTML,可将它放在 CDATA 标签内。如果不放在 CDATA 标签内,则必须写上尖括号作为实体引用,以避免 Google 地球错误解析 HTML(例如,符号 > 写为 >,符号 < 写为 <)。这是 XML 的标准功能,不是 Google 地球所特有的。
请考虑具有 CDATA 标签和不具有该标签的 HTML 标记的不同之处。请先查看下面这个具有 CDATA 标签的 <description>:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Document> <Placemark> <name>CDATA example</name> <description> <![CDATA[ <h1>CDATA Tags are useful!</h1> <p><font color="red">Text is <i>more readable</i> and <b>easier to write</b> when you can avoid using entity references.</font></p> ]]> </description> <Point> <coordinates>102.595626,14.996729</coordinates> </Point> </Placemark> </Document> </kml>
下面是不具有 CDATA 标签的 <description>,这样特殊字符必须使用实体引用:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Document> <Placemark> <name>Entity references example</name> <description> <h1>Entity references are hard to type!</h1> <p><font color="green">Text is <i>more readable</i> and <b>easier to write</b> when you can avoid using entity references.</font></p> </description> <Point> <coordinates>102.594411,14.998518</coordinates> </Point> </Placemark> </Document> </kml>
地面叠加层
通过地面叠加层,您可在 Google 地球的地形上“叠加”图片。<Icon> 元素包含指向叠加图片 .jpg 文件的链接。以下是 KML Samples 文件中的地面叠加层示例,展示了2001年喷发的埃特纳火山:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Folder>
<name>Ground Overlays</name>
<description>Examples of ground overlays</description>
<GroundOverlay>
<name>Large-scale overlay on terrain</name>
<description>Overlay shows Mount Etna erupting on July 13th, 2001.</description>
<Icon>
<href>http://developers.google.com/kml/documentation/images/etna.jpg</href>
</Icon>
<LatLonBox>
<north>37.91904192681665</north>
<south>37.46543388598137</south>
<east>15.35832653742206</east>
<west>14.60128369746704</west>
<rotation>-0.1556640799496235</rotation>
</LatLonBox>
</GroundOverlay>
</Folder> </kml>
请注意,文件开始两行与第一个示例相同,都是 XML 标头和 KML 命名空间声明。
该示例使用文件夹(名为“Ground Overlays”)作为对其内容进行分组和标记的机制。请注意,当您将 KML Samples 文件加载到 Google 地球中时,该文件夹是如何在“位置”面板中显示的。
地面叠加层的定位由 <LatLonBox> 标签控制。边框值以南北纬和东西经度数的形式给出。此外,旋转值是针对 y 轴与网格北端不重合的图片给出的。该示例为叠加层使用 JPEG 图片。Google 地球还支持 BMP、GIF、TIFF、TGA 和 PNG 格式。
路径
您可以在 Google 地球中创建多种不同类型的路径,并且可轻松地利用您的数据充分发挥创造力。在 KML 中,路径是用 <LineString> 元素创建的。看一看 Paths 文件夹中的“Absolute Extruded”示例,您就会明白如何用以下代码生成形状:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Document>
<name>Paths</name>
<description>Examples of paths. Note that the tessellate tag is by default
set to 0. If you want to create tessellated lines, they must be authored
(or edited) directly in KML.</description> <Style id="yellowLineGreenPoly">
<LineStyle>
<color>7f00ffff</color>
<width>4</width>
</LineStyle>
<PolyStyle>
<color>7f00ff00</color>
</PolyStyle>
</Style> <Placemark>
<name>Absolute Extruded</name>
<description>Transparent green wall with yellow outlines</description>
<styleUrl>#yellowLineGreenPoly</styleUrl>
<LineString>
<extrude>1</extrude>
<tessellate>1</tessellate>
<altitudeMode>absolute</altitudeMode>
<coordinates> -112.2550785337791,36.07954952145647,2357
-112.2549277039738,36.08117083492122,2357
-112.2552505069063,36.08260761307279,2357
-112.2564540158376,36.08395660588506,2357
-112.2580238976449,36.08511401044813,2357
-112.2595218489022,36.08584355239394,2357
-112.2608216347552,36.08612634548589,2357
-112.262073428656,36.08626019085147,2357
-112.2633204928495,36.08621519860091,2357
-112.2644963846444,36.08627897945274,2357
-112.2656969554589,36.08649599090644,2357 </coordinates>
</LineString> </Placemark>
</Document> </kml>
请注意,该代码生成的其实只是高于地面的一条折线。<tessellate> 标签将该折线切成小段,而 <extrude> 标签将其向下延伸到地面。
多边形
您可以使用多边形来创建简单的建筑物和其他形状。有关示例,请查看 KML Samples 文件中的“Polygons”文件夹。
五角大楼的示例是通过绘制简单的内外壳,然后将它们向下凸出到地面生成的。代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Placemark>
<name>The Pentagon</name>
<Polygon>
<extrude>1</extrude>
<altitudeMode>relativeToGround</altitudeMode>
<outerBoundaryIs>
<LinearRing>
<coordinates>
-77.05788457660967,38.87253259892824,100
-77.05465973756702,38.87291016281703,100
-77.05315536854791,38.87053267794386,100
-77.05552622493516,38.868757801256,100
-77.05844056290393,38.86996206506943,100
-77.05788457660967,38.87253259892824,100
</coordinates>
</LinearRing>
</outerBoundaryIs>
<innerBoundaryIs>
<LinearRing>
<coordinates>
-77.05668055019126,38.87154239798456,100
-77.05542625960818,38.87167890344077,100
-77.05485125901024,38.87076535397792,100
-77.05577677433152,38.87008686581446,100
-77.05691162017543,38.87054446963351,100
-77.05668055019126,38.87154239798456,100
</coordinates>
</LinearRing>
</innerBoundaryIs>
</Polygon>
</Placemark> </kml>
2 高级 KML 文档
本部分介绍了某些必须用文本编辑器编写的 KML 元素,例如几何图形的共享样式、地标的突出显示图标和屏幕叠加层。“手动”编写 KML 比用 Google 地球界面创建和修改地图项稍微难一些,但只需稍加练习,大多数用户都能轻松地编辑 KML 文件以增添这些效果。
几何图形的样式
在 Google 地球中创建地图项并检查了 Google 地球生成的 KML 代码后,您会注意到样式是您数据显示方式中非常重要的一部分。高级用户可能希望学习如何定义他们自己的样式。
如果您在 KML 文档开头定义了样式,并定义了它的 ID,就可以在文档其他地方定义的几何图形、地标和叠加层中使用该样式。因为可有多个元素使用同一个样式,因此以这种方式定义和使用的样式称为“共享样式”。您只需定义给定样式一次,即可用 <styleUrl> 元素多次引用它。如果样式定义位于同一文件内,请在样式 ID 前加 # 号。如果样式定义位于外部文件中,请在 <styleUrl> 元素中加入完整的网址。
KML Samples 文件包含许多共享样式,每个样式都在文件开头用 ID 进行定义。请注意,您的 ID 最好是描述性的字符串,以便您可以很容易地判断其作用。以下是一个样式示例(“transBluePoly”),它将多边形面定义为透明蓝色,将多边形边的线宽定义为1.5(默认颜色为白色)。Google 园区41号楼示例中使用了该样式(在“Polygons”文件夹中):
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Style id="transBluePoly">
<LineStyle>
<width>1.5</width>
</LineStyle>
<PolyStyle>
<color>7dff0000</color>
</PolyStyle>
</Style> <Placemark>
<name>Building 41</name>
<styleUrl>#transBluePoly</styleUrl>
<Polygon>
<extrude>1</extrude>
<altitudeMode>relativeToGround</altitudeMode>
<outerBoundaryIs>
<LinearRing>
<coordinates> -122.0857412771483,37.42227033155257,17
-122.0858169768481,37.42231408832346,17
-122.085852582875,37.42230337469744,17
-122.0858799945639,37.42225686138789,17
-122.0858860101409,37.4222311076138,17
-122.0858069157288,37.42220250173855,17
-122.0858379542653,37.42214027058678,17
-122.0856732640519,37.42208690214408,17
-122.0856022926407,37.42214885429042,17
-122.0855902778436,37.422128290487,17
-122.0855841672237,37.42208171967246,17
-122.0854852065741,37.42210455874995,17
-122.0855067264352,37.42214267949824,17
-122.0854430712915,37.42212783846172,17
-122.0850990714904,37.42251282407603,17
-122.0856769818632,37.42281815323651,17
-122.0860162273783,37.42244918858722,17
-122.0857260327004,37.42229239604253,17
-122.0857412771483,37.42227033155257,17 </coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</Placemark>
</Document>
</kml>
请注意,<Style> 元素是 <Placemark> 的子元素(而不是它影响的几何图形的子元素)。
突出显示图标的样式
“Styles and Markup”文件夹中的“突出显示图标”介绍了如何用 KML 创造滚轮效果。该文档定义了两种样式:一种用于“normalPlacemark”,另一种用于“highlightPlacemark”(光标移动到图标上时显示)。<StyleMap> 元素有两个键/值对,可以将每个图标样式映射到图标状态。图标有两种状态:普通和突出显示。
下面显示了基本步骤:
- 为地标的普通图标定义 <Style>,并为它指定 ID(此处是“normalPlacemark”)。<Style> 包含一个 <Icon>,<Icon> 中包含要使用的实际图片的 <href>(如下所示)。
- 为地标的突出显示图标定义 <Style>,并为它指定 ID(此处为“highlightPlacemark”)。
- 创建 <StyleMap> 元素并为它指定 ID(“exampleStyleMap”)。地标将指向该 ID。
- 在 <StyleMap> 元素中,为“普通”状态指定“#normalPlacemark”。
- 在 <StyleMap> 元素中,为“突出显示”状态指定“#highlightPlacemark”。
- 在地标中添加引用“#exampleStyleMap”的 <styleUrl> 元素。
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Highlighted Icon</name>
<description>Place your mouse over the icon to see it display the new icon</description>
<Style id="highlightPlacemark">
<IconStyle>
<Icon>
<href>http://maps.google.com/mapfiles/kml/paddle/red-stars.png</href>
</Icon>
</IconStyle>
</Style>
<Style id="normalPlacemark">
<IconStyle>
<Icon>
<href>http://maps.google.com/mapfiles/kml/paddle/wht-blank.png</href>
</Icon>
</IconStyle>
</Style>
<StyleMap id="exampleStyleMap">
<Pair>
<key>normal</key>
<styleUrl>#normalPlacemark</styleUrl>
</Pair>
<Pair>
<key>highlight</key>
<styleUrl>#highlightPlacemark</styleUrl>
</Pair>
</StyleMap>
<Placemark>
<name>Roll over this icon</name>
<styleUrl>#exampleStyleMap</styleUrl>
<Point>
<coordinates>-122.0856545755255,37.42243077405461,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>
屏幕叠加层
屏幕叠加层无法直接在 Google 地球中编写,因此比地面叠加层更难以创建。KML Samples 文件中的“Screen Overlays”文件夹中包含大量示例。
例如,在 KML Samples 文件中启用“Absolute Positioning: Top left”文件夹后,您就会在视图窗口左上角看到屏幕叠加层。该叠加层是由以下 KML 代码创建的:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<ScreenOverlay>
<name>Absolute Positioning: Top left</name>
<Icon>
<href>http://developers.google.com/kml/documentation/images/top_left.jpg</href>
</Icon>
<overlayXY x="0" y="1" xunits="fraction" yunits="fraction"/>
<screenXY x="0" y="1" xunits="fraction" yunits="fraction"/>
<rotationXY x="0" y="0" xunits="fraction" yunits="fraction"/>
<size x="0" y="0" xunits="fraction" yunits="fraction"/>
</ScreenOverlay>
</kml>
叠加层的定位是通过将 <overlayXY> 指定的图片中的点映射到 <screenXY> 指定的屏幕上的点来控制的。在这种情况下,图片左上角 (0,1) 与屏幕上的这一点重合。
请检查该文件夹中的其他示例,了解如何能获取其他固定位置,并创建大小随屏幕大小动态调整的图片(请注意,xunits 和 yunits 也可以指定为“像素”,以便精确控制)。有关进一步的详细信息,请参见KML 2.2参考。
网络链接
网络链接包含用于加载文件且带有 <href>(超链接引用)的 <Link> 元素。<href> 可指定为本地文件或绝对网址。除了名称外,<NetworkLink> 无需从网络加载任何文件。
链接中的 <href> 可指定以下任意对象的位置:
- 图标样式、地面叠加层和屏幕叠加层中图标使用的图片文件
- <Model> 元素中使用的模型文件
- 网络链接加载的 KML 或 KMZ 文件
指定的文件可以是本地文件,也可以是远程服务器上的文件。网络链接的最简单形式是将一个大的 KML 文件分割为同一台计算机上较小且更易于管理的多个文件。
到目前为止,我们的所有示例都要求从本地计算机将 KML 代码传递给 Google 地球。网络链接可让您从远程计算机提供内容,并且常用于向大量用户分发数据。用这种方式分发数据时,如果需要修改数据,只需在源位置修改,所有用户就会自动收到更新后的数据。
KML 的 CGI 脚本
除了指向包含静态数据的文件外,网络链接的 <href> 可指向动态生成的数据,例如由网络服务器上 CGI 脚本生成的数据。如果您具备 PHP、Python 或 Perl 等脚本语言知识,就可以创建将 KML 数据流(或文件)传递到每个网络链接的脚本。
通过网络 CGI 传递 KML 时,需要执行以下两项操作:
从客户端(Google 地球)向服务器发出调用请求时,服务器必须 (1) 返回响应代码HTTP 200,并且 (2) 将响应的内容类型设置为 text/plain
或 application/vnd.google-earth.kml+xml.
响应必须是有效的 KML。对于复杂的应用,对错误进行正确的处理非常重要。
提示:处理错误的简单方法是将服务器的错误语法解析为文件夹名称的文本。例如,您可以让服务器返回 <Folder><name>database inaccessible</name></Folder>
字符串。与断开连接相比,这样可提供更多信息,也更便于用户使用。
以下示例使用 Python,但它们在其他任何脚本语言中也同样有效。
生成随机地标
以下 Python 脚本生成纬度和经度的随机整数值,然后将这些值插入 <Point> 的 <coordinates> 元素中。每当网络链接刷新时,Python 脚本都会重新运行,并用新的纬度和经度值生成 KML。
#!/usr/bin/python import random latitude = random.randrange(-90, 90) longitude = random.randrange(-180, 180) kml = ( '<?xml version="1.0" encoding="UTF-8"?>\n' '<kml xmlns="http://www.opengis.net/kml/2.2">\n' '<Placemark>\n' '<name>Random Placemark</name>\n' '<Point>\n' '<coordinates>%d,%d</coordinates>\n' '</Point>\n' '</Placemark>\n' '</kml>' ) %(longitude, latitude) print 'Content-Type: application/vnd.google-earth.kml+xml\n' print kml
以下是包含加载该 Python 脚本的网络链接的 KML 文件示例:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Folder>
<name>Network Links</name>
<visibility>0</visibility>
<open>0</open>
<description>Network link example 1</description>
<NetworkLink>
<name>Random Placemark</name>
<visibility>0</visibility>
<open>0</open>
<description>A simple server-side script that generates a new random
placemark on each call</description>
<refreshVisibility>0</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href>http://yourserver.com/cgi-bin/randomPlacemark.py</href>
</Link>
</NetworkLink>
</Folder>
</kml>
基于视图的刷新查询
标准网络链接是单向链接:数据只从服务器流向 Google 地球。基于视图的刷新允许进行双向通信。激活基于视图的刷新时,Google 地球会在指定时间将视图坐标返回给服务器。该时间可以是每n秒、分钟、小时,或视图停止移动后经过的一段时间。请参见KML 2.2参考中的 <viewRefreshMode>。
坐标通过以如下方式附加坐标的 HTTP GET 返回给服务器(此为默认的边框信息):
GET /path/to/sever/script/query?BBOX=[longitude_west, latitude_south, longitude_east, latitude_north] HTTP/1.1
如果请求是在用户俯瞰旧金山时发出的,坐标可能如下所示:
GET /path/to/server/script/query?BBOX=-122.497790,37.730385,-122.380087,37.812331 HTTP/1.1
该功能可以有一些很富创意的应用,但是为帮助您入门,下面只展示了一个简单示例。
跟踪视图正下方的点
以下服务器端 Python 脚本会对 Google 地球发送的返回讯息进行解析,并在屏幕中心显示一个地标作为响应。每次刷新网络链接时,都会生成新的地标。
#!/usr/bin/python import cgi url = cgi.FieldStorage() bbox = url['BBOX'].value bbox = bbox.split(',') west = float(bbox[0]) south = float(bbox[1]) east = float(bbox[2]) north = float(bbox[3]) center_lng = ((east - west) / 2) + west center_lat = ((north - south) / 2) + south kml = ( '<?xml version="1.0" encoding="UTF-8"?>\n' '<kml xmlns="http://www.opengis.net/kml/2.2">\n' '<Placemark>\n' '<name>View-centered placemark</name>\n' '<Point>\n' '<coordinates>%.6f,%.6f</coordinates>\n' '</Point>\n' '</Placemark>\n' '</kml>' ) %(center_lng, center_lat) print 'Content-Type: application/vnd.google-earth.kml+xml\n' print kml
以下是加载 Python 脚本的网络链接的 KML:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Folder>
<name>Network Links</name>
<visibility>0</visibility>
<open>0</open>
<description>Network link example 2</description>
<NetworkLink>
<name>View Centered Placemark</name>
<visibility>0</visibility>
<open>0</open>
<description>The view-based refresh allows the remote server to calculate
the center of your screen and return a placemark.</description>
<refreshVisibility>0</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href>http://yourserver.com/cgi-bin/viewCenteredPlacemark.py</href>
<refreshInterval>2</refreshInterval>
<viewRefreshMode>onStop</viewRefreshMode>
<viewRefreshTime>1</viewRefreshTime>
</Link>
</NetworkLink>
</Folder>
</kml>
该示例中指明的原理可用于一些很复杂的应用。例如,如果您有地理信息数据库,便可提取查看者坐标,从数据库调用该视图的专有数据,并以 KML 形式返回给 Google 地球。
3 KML MIME 类型
响应来自 Google 地球(或任何地球浏览器)的请求时,KML 服务器必须遵循一组特定规则,以便 Google 地球能正确解释其响应。
成功后,服务器必须返回响应代码HTTP 200,并将响应的内容类型设置为合适的 MIME 类型(如下所述)。
Google 地球读取 KML 和 KMZ 文件。KML 文件的 MIME 类型是
application/vnd.google-earth.kml+xml
KMZ 文件的 MIME 类型是
application/vnd.google-earth.kmz
对于 Apache,将以下行添加到“httpd.conf”文件:
AddType application/vnd.google-earth.kml+xml .kml
AddType application/vnd.google-earth.kmz .kmz
有关在 Microsoft 的 IIS 上设置 MIME 类型的详情,请参见 Microsoft 文档。
响应的正文必须包含有效的 KML 数据,其中包括 XML 声明 (<?xml version="1.0" encoding="UTF-8"?>
)。如果服务器返回无效的 KML,网络链接将停止、停用并输出错误讯息。