KML 参考

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

本部分包含有关 KML 版本2.2中定义的所有 KML 元素以及 Google 扩展元素命名空间中的元素的参考(按字母顺序排列)。KML 元素的类树如下所示。在此图中,树中特定分支右侧的元素是其左侧的元素扩展。例如,地标是特殊类型的地图项。它包含属于 Feature 的所有元素,另外还添加一些 Placemark 元素所特有的元素。

KML 是一种开放式标准,其官方名称为“开放地理资讯编码标准”(OGC KML,OpenGIS® KML Encoding Standard),由 Open Geospatial Consortium, Inc. (OGC) 维护。访问 http://www.opengeospatial.org/standards/kml/,即可查看 OGC KML 的完整规范。

访问 http://schemas.opengis.net/kml/,即可查看 KML 的完整 XML 架构。

请注意:点击该图中的元素名称,即可跳转到参考部分中的相应条目。

类树图 Object 元素(父级) gx:Tour 元素;Feature 的子元素 NetworkLink 元素;Feature 的子元素 Placemark 元素;Feature 的子元素 Overlay 元素;Feature 的子元素 Container 元素;Feature 的子元素 Feature 元素 Geometry 元素;Object 的子元素 PhotoOverlay 元素;Object 的子元素 ScreenOverlay;Overlay 的子元素 GroundOverlay 元素;Overlay 的子元素 Folder 元素,Container 的子元素 Document 元素,Container 的子元素 Point 元素;Geometry 的子元素 LineString 元素,Geometry 的子元素 LinearRing 元素;Geometry 的 Link 元素;Object 的子元素 Icon 元素;Link 的子元素 Orientation 元素;Object 的子元素 Location 元素;Object 的子元素 Scale 元素;Object 的子元素 Polygon 元素;Geometry 的子元素 MultiGeometry 元素;Geometry 的子元素 Model 元素;MultiGeometry 的子元素 gx:Track 元素;Geometry 的子元素 Style 元素;StyleSelector 的子元素 gx:MultiTrack 元素;Geometry 的 StyleSelector 元素;Object 的子元素 StyleMap 元素;StyleSelector 的子元素 TimePrimitive 元素;Object 的子元素 TimeSpan 元素;TimePrimitive 的子元素 gx:TimeStamp AbstractView 元素;Object 的子元素 Camera 元素;AbstractView 的子元素 LookAt 元素;AbstractView 的子元素 Region 元素;Object 的子元素 Lod 元素;Object 的子元素 LatLonBox 元素;Object 的子元素 LatLonAltBox 元素;Object 的子元素 gx:LatLonQuad 元素;Object 的子元素 SubStyle 元素;Object 的子元素 BalloonStyle 元素;SubStyle 的子元素 ColorStyle 元素;SubStyle 的子元素 ListStyle 元素;SubStyle 的子元素 gx:TimeSpan 元素;TimeSpan 的子元素 TimeStamp 元素;TimePrimitive 的子元素 LineStyle 元素;ColorStyle 的子元素 PolyStyle 元素;ColorStyle 的子元素 IconStyle 元素;ColorStyle 的子元素 LabelStyle 元素;ColorStyle 的子元素 gx:TourPrimitive 元素;Object 的子元素 gx:AnimatedUpdat gx:FlyTo 元素;TourPrimitive 的子元素 gx:SoundCue 元素;TourPrimitive 的子元素 gx:TourControl 元素;gx:TourPrimitive 的子元素 gx:Wait 元素;gx:TourPrimitive 的子元素 gx:PlayList 元素;Object 的子元素

请注意,KML 文件中不会真的使用抽象元素(上图中以方框标示)。它们是一种非常有用的编程方式,可用于将单个元素用作多个相似(但不相同)的派生元素的编程基础。同时,理解这一面向对象的层次结构可让您轻松了解相关元素的分组情况,因此也不失为学习 KML 的一个好方法。

所有派生自 Object 的元素都分配有一个 idid 由 KML 更新机制(请参阅 <Update>)用于通过 NetworkLink 加载的文件。同时,共享样式(参见 <Style>)也使用该 ID。id 是标准的 XML ID

KML 是一种 XML 语法和文件格式,因此标记名称区分大小写,而且必须与上图中的相应内容完全一致。如果您熟悉 XML,那么您也将会对KML 2.2架构感兴趣。编辑 KML 文本文件时,您可以将该架构加载到任何 XML 编辑器中,并用它来验证您的 KML 代码。

提示:查看 Google 地球地图项的 KML

Google 地球中提供了一个非常方便的功能,可让您轻松查看任意地图项的 KML 文件。在 Google 地球中,您可以右键点击“位置”面板中的某个地图项,并将其复制下来。要查看复制对象所对应的 KML,请打开您惯用的文本编辑器,然后将所选内容粘贴到编辑器中。

兼容性

KML 版本具有双重编号系统:majorVersion.minorVersion。具有相同 majorVersion 的所有版本都兼容。因此,如果您将命名空间更改为“2.2”(即 xmlns="http://www.opengis.net/kml/2.2"),则所有 KML 2.1 文件都会在 KML 2.2 架构中进行验证。

关于本参考

每个参考条目都包含一个“语法”部分,该部分列出了主元素中所包含的各个元素。语法部分是一个非正式列表,它使用简单的速记语言汇总了相应的元素。该部分还包含以下内容:

  • 每个元素的默认值(如果是复杂元素或无默认值,则为省略号)
  • 值的类型(请参阅 KML 字段

您可以复制语法部分,并在 KML 文件中将其用作任意非抽象元素的模板。

KML 扩展元素命名空间和 gx 前缀

OGC KML 标准提供了一种扩展元素(即包含标准中未列信息的其他元素)机制(请访问 w3.org,了解有关 XML 命名空间的详情)。Google 地球5.0发布后,Google 提供了一些用以支持大量新地图项的 KML 扩展元素。这些扩展程序使用 gx 前缀和以下命名空间 URI:

 xmlns:gx="http://www.google.com/kml/ext/2.2"

此命名空间 URI 必须使用 gx- 前缀元素添加到任意 KML 文件中的 <kml> 元素:

<kml xmlns="http://www.opengis.net/kml/2.2"
 xmlns:gx="http://www.google.com/kml/ext/2.2">

并非所有的地理浏览器都支持 KML 的各种扩展元素。如果您的浏览器不支持某些特定的扩展元素,则会忽略这些扩展元素中的数据而不进行提示;同时还会正确加载 KML 文件的其余部分。

目前使用 gx 前缀的元素有:

访问 http://developers.google.com/kml/schema/kml22gx.xsd,即可查看该扩展元素命名空间中元素的完整 XML 架构。

KML 字段

KML 使用常见的布尔值类型,如布尔值、字符串、双精度、浮点数整数。此外,它还定义了许多字段元素类型。下表列出了 KML 中定义的一些最常用的类型,以及指向使用这些类型的示例元素的链接:

字段类型 价值 用法示例
heightModeEnum clampToGround、relativeToGround、absolute 参见 <LookAt><Region>
角度 90 大于等于−90且小于等于90的值 参见 <Model> 中的 <latitude>
anglepos90 大于等于0且小于等于90的值 参见 <LookAt> 中的 <tilt>
角度 180 大于等于−180且小于等于180的值 参见 <Model> 中的 <longitude>
角度 360 大于等于−360且小于等于360的值 请参阅 <Orientation> 中的 <head>
颜色 十六进制数值:aabbggrr 查看对 <ColorStyle> 进行扩展的任意元素
colorModeEnum 普通、随机 查看对 <ColorStyle> 进行扩展的任意元素
日期时间 dateTime、date、gYearMonth、gYear 参见 <TimeSpan><TimeStamp>
displayModeEnum 默认、隐藏 参见 <BalloonStyle>
gridOrigin bottomLeft、upLeft 参见 <PhotoOverlay>
刷新模式枚举 onChange、onInterval、onExpire 参见 <Link>
shapeEnum 矩形、圆柱体、球体 参见 <PhotoOverlay>
styleStateEnum normal、highlight 参见 <StyleMap>
unitsEnum 比例、像素、insetPixels 参见 <IconStyle> 中的 <hotSpot>,或参见 <ScreenOverlay>
vec2 x=double xunits=KML:unitsEnum
y=double yunits=KML:unitsEnum
请参阅 <IconStyle> 中的 <hotSpot>
<ScreenOverlay>
viewRefreshEnum never、onRequest、onStop、onRegion 参见 <Link>

 

<抽象视图>

语法

<!-- abstract element; do not create -->
<!-- AbstractView -->                       <!-- Camera, LookAt -->
  <!-- extends Object -->
  <TimePrimitive>...</TimePrimitive>        <!-- gx:TimeSpan or gx:TimeStamp -->
  <gx:ViewerOptions>
    <gx:option name="" enabled=boolean />   <!-- name="streetview",
                                                      "historicalimagery",
                                                   or "sunlight" -->
  </gx:ViewerOptions>
<-- /AbstractView -->

说明

这是一个抽象元素,不能直接在 KML 文件中使用。该元素的扩展元素为 <Camera><LookAt>

扩展源

AbstractView 的特有元素

<gx:ViewerOptions>
该元素可在 Google 地球 6.0 及更高版本中启用特殊查看模式。它有一个或多个 <gx:option> 子元素。<gx:option> 元素具有 name 属性和 enabled 属性。name 指定下列其中一项:街景图像(“街景”)、历史图像(“历史图像”)以及一天中给定时间的光照效果(“光照”)。enabled 属性用于开启或关闭指定的查看模式。
<gx:horizFov>
定义游览期间 AbstractView 的水平视野。此元素不会影响游览之外的 AbstractView。在游览录制期间,Google 地球客户端(版本 6.1 及更高版本)会自动插入 <gx:horizFov>。常规 AbstractView 的值为 60;街景中的视图的值为 85,以与 Google 地球中的标准街景视野相匹配。设置后,该值将应用于后续视图,直到指定新值。

扩展来源

<gx:altitudeMode>

该元素是OGC KML 2.2标准的扩展元素,并且受 Google 地球5.0及更高版本的支持。了解详情

语法

<gx:altitudeMode>clampToGround</gx:altitudeMode>
  <!-- gx:altitudeModeEnum: relativeToSeaFloor, clampToSeaFloor, relativeToGround, clampToGround, absolute -->

说明

可用于替代 OGC KML 标准 <altitudeMode> 元素,且除了标准 heightMode 值外,还接受以下值:

  • relativeToSeaFloor - 将高度解释为以海底为基准的值(以米为单位)。如果 KML 地图项位于陆地上方而不是海面上方,则会将高度解释为地面以上的高度。
  • clampToSeaFloor - 用于忽略高度规范,并将 KML 地图项置于海底。如果 KML 地图项位于陆地上而不是海上,那么 clampToSeaFloor 会将其固定到地面上。

<altitudeMode> 一样,<gx:altitudeMode> 会影响:

  • <coordinates> 元素内的海拔坐标
  • <LatLonAltBox> 中的 <minAltitude><maxAltitude>
  • <Location><GroundOverlay>AbstractView<LookAt><Camera>)中的 <altitude>

有关海拔模式的详情,请参阅 KML 开发者指南中的海拔模式章节。

示例

 altitudemode_reference.kml

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"
 xmlns:gx="http://www.google.com/kml/ext/2.2">   <!-- required when using gx-prefixed elements -->

<Placemark>
  <name>gx:altitudeMode Example</name>
  <LookAt>
    <longitude>146.806</longitude>
    <latitude>12.219</latitude>
    <heading>-60</heading>
    <tilt>70</tilt>
    <range>6300</range>
    <gx:altitudeMode>relativeToSeaFloor</gx:altitudeMode>
  </LookAt>
  <LineString>
    <extrude>1</extrude>
    <gx:altitudeMode>relativeToSeaFloor</gx:altitudeMode>
    <coordinates>
      146.825,12.233,400
      146.820,12.222,400
      146.812,12.212,400
      146.796,12.209,400
      146.788,12.205,400
    </coordinates>
  </LineString>
</Placemark>

</kml>

 

<gx:AnimatedUpdate>

该元素是OGC KML 2.2标准的扩展元素,并且受 Google 地球5.0及更高版本的支持。了解详情

语法

<gx:AnimatedUpdate id="ID">
  <gx:duration>0.0</gx:duration>     <!-- double, specifies time in seconds -->
  <Update>
    <targetHref>...</targetHref>     <!-- required; can contain a URL or be left blank -->
                                      <!-- (to target elements within the same file) -->
    <Change>...</Change>
    <Create>...</Create>
    <Delete>...</Delete>
  </Update>
  <gx:delayedStart>0</gx:delayedStart>  <!-- double, specifies time in seconds -->
</gx:AnimatedUpdate>

说明

<gx:AnimatedUpdate> 可使用 <Update> 控制游览期间对 KML 地图项的更改。更改 KML 地图项不会修改 DOM,也就是说,游览结束后所有更改都将还原,而且更改不会保存在 KML 中。

<gx:AnimatedUpdate> 还应包含一个 <gx:duration> 值,用于指定更新所需的时长(以秒为单位)。在该时间段内,系统会动态平稳地将 integer、float 和 color 字段从原始值更改为新值;而 boolean、string 和其他不适合使用插值类型方法的值则会在此时间段结束后进行更新。

有关 <gx:AnimatedUpdate> 和游览时间轴的信息,请参见 KML 开发者指南游览一章中的游览时间轴

<gx:duration>
指定更新所需的时长(以秒为单位)。
<gx:delayedStart>
指定在开始更新之前等待(内嵌起始位置之后)的秒数。

示例

以下示例演示了图标大小的更改过程,该动画时长5秒钟。

 animatedupdate_example.kml

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"
 xmlns:gx="http://www.google.com/kml/ext/2.2">

<Document>
  <name>gx:AnimatedUpdate example</name>

  <Style id="pushpin">
    <IconStyle id="mystyle">
<Icon>
<href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href> <scale>1.0</scale>
</Icon>
</IconStyle>
</Style> <Placemark id="mountainpin1"> <name>Pin on a mountaintop</name> <styleUrl>#pushpin</styleUrl>
<Point>
<coordinates>170.1435558771009,-43.60505741890396,0</coordinates>
</Point> </Placemark> <gx:Tour> <name>Play me!</name> <gx:Playlist> <gx:FlyTo>
<gx:flyToMode>bounce</gx:flyToMode>
<gx:duration>3</gx:duration>
<Camera>
<longitude>170.157</longitude>
<latitude>-43.671</latitude>
<altitude>9700</altitude>
<heading>-6.333</heading>
<tilt>33.5</tilt>
</Camera>
</gx:FlyTo> <gx:AnimatedUpdate> <gx:duration>5</gx:duration> <Update> <targetHref></targetHref> <Change> <IconStyle targetId="mystyle"> <scale>10.0</scale> </IconStyle> </Change> </Update> </gx:AnimatedUpdate> <gx:Wait> <gx:duration>5</gx:duration> </gx:Wait> </gx:Playlist> </gx:Tour> </Document> </kml>

扩展源

包含元素

<BalloonStyle>

语法

<BalloonStyle id="ID">
  <!-- specific to BalloonStyle -->
  <bgColor>ffffffff</bgColor>            <!-- kml:color -->
  <textColor>ff000000</textColor>        <!-- kml:color -->
  <text>...</text>                       <!-- string -->
  <displayMode>default</displayMode>     <!-- kml:displayModeEnum -->
</BalloonStyle>

说明

指定如何绘制地标的说明提示框。<bgColor>(如果指定)的值所代表的颜色将用作提示框的背景色。有关默认说明提示框在 Google 地球中的显示形式的图示说明,请参见 <Feature>

BalloonStyle 的特有元素

<bgColor>
提示框的背景颜色(可选)。颜色值和透明度 (alpha) 值以十六进制表示法表示。任何一种颜色值的范围都是 0 到 255(00ff)。表达式的顺序是 aabbggrr,其中 aa=alpha(00 到 ff);bb=blue(00 到 ff);gg=green(00 到 ff);rr=red(00 到 ff)。对于 Alpha 版,00 是完全透明的,ff 是完全不透明的。例如,如果要对叠加层应用透明度为 50% 的蓝色,您需要指定以下内容:<bgColor>7fff0000</bgColor>,其中 alpha=0x7f、blue=0xff、green=0x00 和 red=0x00。默认的背景色为不透明的白色 (ffffffff)。

注意:<BalloonStyle> 内已弃用 <color> 元素,请改为使用 <bgColor>。

<textColor>
文本的前景颜色。默认为黑色 (ff000000)。
<text>
提示框中显示的文字。如果未指定文字,Google 地球将绘制默认提示框(如果地图项 <name> 以粗体显示、地图项 <description>、行车路线链接、白色背景以及指向该地图项点坐标的尾部,则必须指定)。
您可以使用以下格式向 <text> 标记添加实体,以引用地图项的子元素:$[name]$[description]$[address]$[id]$[Snippet]。Google 地球会在当前的地图项中查找对应的字符串实体并替换提示框中的相应信息。要在提示框中添加前往此处 -“从此处出发”行车路线,请使用 $[geDirections] 标签。为防止行车路线链接显示在提示框中,请添加带有某些内容或使用 $[description] 的 <text> 元素,以替换基本地图项 <description>。
例如,在以下 KML 摘录中,$[name]$[description] 字段将被替换为使用该样式的地图项样式
<text>This is $[name], whose description is:<br/>$[description]</text>
中的 <name> 和 <description> 字段:
<displayMode>
如果 <displayMode> 为默认值,Google 地球会使用 <text> 中提供的信息创建提示框。如果 <displayMode> 为“hide”,则 Google 地球将不显示提示框。在 Google 地球中,对于提示框的 <displayMode> 为“hide”的地标,点击该地标的“列表视图”图标即可让 Google 地球飞到该地标。

示例

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document> <name>BalloonStyle.kml</name>
<open>1</open>
<Style id="exampleBalloonStyle">
<BalloonStyle>
<!-- a background color for the balloon -->
<bgColor>ffffffbb</bgColor>
<!-- styling of the balloon text -->
<text><![CDATA[
<b><font color="#CC0000" size="+3">$[name]</font></b>
<br/><br/>
<font face="Courier">$[description]</font>
<br/><br/>
Extra text that will appear in the description balloon
<br/><br/>
<!-- insert the to/from hyperlinks -->
$[geDirections]
]]></text>
</BalloonStyle>
</Style>
<Placemark>
<name>BalloonStyle</name>
<description>An example of BalloonStyle</description>
<styleUrl>#exampleBalloonStyle</styleUrl>
<Point>
<coordinates>-122.370533,37.823842,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>

扩展源

包含方

返回页首

<gx:balloonVisibility>

该元素是OGC KML 2.2标准的扩展元素,并且受 Google 地球5.0及更高版本的支持。了解详情

语法

<gx:balloonVisibility>0</gx:balloonVisibility>    <!-- 0 (not visible) or 1 (visible) -->

说明

用于切换是否显示说明提示框。要更新的提示框必须通过对象的 XML ID(例如 <Placemark targetId="xxx">)标识。

示例

第一个示例展示了 <gx:balloonVisibility> 和地标。加载该地标时,系统会打开该说明提示框。
气球可见性示例_KML

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"
 xmlns:gx="http://www.google.com/kml/ext/2.2">

  <Placemark>
    <name>Eiffel Tower</name>
    <description>
        Located in Paris, France. 

This description balloon opens
when the Placemark is loaded. </description> <gx:balloonVisibility>1</gx:balloonVisibility> <Point> <coordinates>2.294785,48.858093,0</coordinates> </Point> </Placemark> </kml>

第二个示例展示了 <gx:balloonVisibility> 在游览中的使用。系统会在游览过程中打开和关闭多个提示框,从而为查看者提供相关信息。
气球可见性

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"
 xmlns:gx="http://www.google.com/kml/ext/2.2">

  <Document>
    <name>balloonVisibility Example</name>
    <open>1</open>

    <gx:Tour>
      <name>Play me</name>
      <gx:Playlist>

        <gx:FlyTo>
          <gx:duration>8.0</gx:duration>
          <gx:flyToMode>bounce</gx:flyToMode>
          <LookAt>
            <longitude>-119.748584</longitude>
            <latitude>33.736266</latitude>
            <altitude>0</altitude>
            <heading>-9.295926</heading>
            <tilt>84.0957450</tilt>
            <range>4469.850414</range>
            <gx:altitudeMode>relativeToSeaFloor</gx:altitudeMode>
          </LookAt>
        </gx:FlyTo>

        <gx:AnimatedUpdate>
          <gx:duration>0.0</gx:duration>
          <Update>
            <targetHref/>
            <Change>
              <Placemark targetId="underwater1">
                <gx:balloonVisibility>1</gx:balloonVisibility>
              </Placemark>
            </Change>
          </Update>
        </gx:AnimatedUpdate>

        <gx:Wait>
          <gx:duration>4.0</gx:duration>
        </gx:Wait>

        <gx:AnimatedUpdate>
          <gx:duration>0.0</gx:duration>
          <Update>
            <targetHref/>
            <Change>
              <Placemark targetId="underwater1">
                <gx:balloonVisibility>0</gx:balloonVisibility>
              </Placemark>
            </Change>
          </Update>
        </gx:AnimatedUpdate>

        <gx:FlyTo>
          <gx:duration>3</gx:duration>
          <gx:flyToMode>smooth</gx:flyToMode>
          <LookAt>
            <longitude>-119.782630</longitude>
            <latitude>33.862855</latitude>
            <altitude>0</altitude>
            <heading>-9.314858</heading>
            <tilt>84.117317</tilt>
            <range>6792.665540</range>
            <gx:altitudeMode>relativeToSeaFloor</gx:altitudeMode>
          </LookAt>
        </gx:FlyTo>

        <gx:AnimatedUpdate>
          <gx:duration>0.0</gx:duration>
          <Update>
            <targetHref/>
            <Change>
              <Placemark targetId="underwater2">
                <gx:balloonVisibility>1</gx:balloonVisibility>
              </Placemark>
            </Change>
          </Update>
        </gx:AnimatedUpdate>

        <gx:Wait>
          <gx:duration>4.0</gx:duration>
        </gx:Wait>

        <gx:AnimatedUpdate>
          <gx:duration>0.0</gx:duration>
          <Update>
            <targetHref/>
            <Change>
              <Placemark targetId="underwater2">
                <gx:balloonVisibility>0</gx:balloonVisibility>
              </Placemark>
            </Change>
          </Update>
        </gx:AnimatedUpdate>

        <gx:FlyTo>
          <gx:duration>3</gx:duration>
          <gx:flyToMode>smooth</gx:flyToMode>
          <LookAt>
            <longitude>-119.849578</longitude>
            <latitude>33.968515</latitude>
            <altitude>0</altitude>
            <heading>-173.948935</heading>
            <tilt>23.063392</tilt>
            <range>3733.666023</range>
            <altitudeMode>relativeToGround</altitudeMode>
          </LookAt>
        </gx:FlyTo>

        <gx:AnimatedUpdate>
          <gx:duration>0.0</gx:duration>
          <Update>
            <targetHref/>
            <Change>
              <Placemark targetId="onland">
                <gx:balloonVisibility>1</gx:balloonVisibility>
              </Placemark>
            </Change>
          </Update>
        </gx:AnimatedUpdate>

        <gx:Wait>
          <gx:duration>4.0</gx:duration>
        </gx:Wait>

      </gx:Playlist>
    </gx:Tour>

    <Placemark id="underwater1">
      <name>Underwater off the California Coast</name>
      <description>
        The tour begins near the Santa Cruz Canyon,
        off the coast of California, USA.
      </description>
      <Point>
        <gx:altitudeMode>clampToSeaFloor</gx:altitudeMode>
        <coordinates>-119.749531,33.715059,0</coordinates>
      </Point>
    </Placemark>

    <Placemark id="underwater2">
      <name>Still swimming...</name>
      <description>We're about to leave the ocean, and visit the coast...</description>
      <Point>
        <gx:altitudeMode>clampToSeaFloor</gx:altitudeMode>
        <coordinates>-119.779550,33.829268,0</coordinates>
      </Point>
    </Placemark>

    <Placemark id="onland">
      <name>The end</name>
      <description>
        <![CDATA[The end of our simple tour.
        Use <gx:balloonVisibility>1</gx:balloonVisibility>
        to show description balloons.]]>
      </description>
      <Point>
        <coordinates>-119.849578,33.968515,0</coordinates>
      </Point>
    </Placemark>


  </Document>
</kml>

扩展

<Camera>

语法

<Camera id="ID">
  <!-- inherited from AbstractView element -->
  <TimePrimitive>...</TimePrimitive>  <!-- gx:TimeSpan or gx:TimeStamp -->
  <gx:ViewerOptions>
    <option> name=" " type="boolean">     <!-- name="streetview", "historicalimagery", "sunlight", or "groundnavigation" -->
    </option>
  </gx:ViewerOptions>

  <!-- specific to Camera -->
  <longitude>0</longitude>            <!-- kml:angle180 -->
  <latitude>0</latitude>              <!-- kml:angle90 -->
  <altitude>0</altitude>              <!-- double -->
  <heading>0</heading>                <!-- kml:angle360 -->
  <tilt>0</tilt>                      <!-- kml:anglepos180 -->
  <roll>0</roll>                      <!-- kml:angle180 -->
  <altitudeMode>clampToGround</altitudeMode>
        <!-- kml:altitudeModeEnum: relativeToGround, clampToGround, or absolute -->
        <!-- or, gx:altitudeMode can be substituted: clampToSeaFloor, relativeToSeaFloor -->
</Camera> 

说明

定义用于查看场景的虚拟镜头。该元素定义了镜头相对于地表的位置以及镜头的查看方向。镜头位置由 <经度>、<纬度>、<高度> 以及 <海拔模式> 或 <gx:heightMode> 定义。镜头的查看方向由 <head>、<tilt> 和 <roll> 定义。<Camera> 可以是任何地图项的子元素,也可以是 <NetworkLinkControl> 的子元素。<父元素时间不得同时包含 <CameraLink>。

<Camera> 能够对视图提供六个方位的全面自由控制,因此您可以在空间中定位镜头,然后使它绕着 X、Y 和 Z 轴旋转。最重要的是,您可以倾斜镜头视图,以便越过地平线观察星空。

<Camera> 还可以包含 TimePrimitive(<gx:TimeSpan> 或 <gx:TimeStamp>)。相机中的时间值会影响历史图像、光照以及带有时间戳的地图项的显示。有关详情,请参见《开发者指南》的“时间和动画”一章中的“使用 AbstractView 指定时间”。

定义视图

在 Feature 或 <NetworkLinkControl> 中,使用 <Camera> 或 <LookAt> 对象(但不能在同一个对象中同时使用)。<Camera> 对象会根据查看者的位置和方向定义视点。通过 <Camera> 对象,您可以指定不位于地表的视图。<LookAt> 对象根据所查看的对象定义视点。<LookAt> 对象在视野方面的局限性要大于 <Camera>,且通常要求查看方向与地表相交。

下图显示了附加于虚拟镜头的 X、Y 和 Z 轴。

  • X 轴指向镜头右侧,称为“向右矢量”。
  • Y 轴定义相对于屏幕的“向上”方向,称为“向上矢量”。
  • Z 轴从屏幕的中心指向视点(镜头向下沿着 Z 轴方向,称为“查看矢量”)。

转换顺序

旋转的顺序很重要。默认情况下,镜头沿 −Z 轴垂直俯瞰地球。在执行旋转之前,相机会沿着 Z 轴转换到相应的高度。转换顺序如下:

  1. <altitude> - 沿 Z 轴转换到 <height>
  2. <heading> - 绕 Z 轴旋转。
  3. <tilt> - 绕 X 轴旋转。
  4. <roll> -(再次)绕 Z 轴旋转。

请注意,每次进行旋转时,两条镜头轴都会改变方向。

Camera 的特有元素

<longitude>
虚拟摄像头的经度(视点)。相对于本初子午线的角度距离(以度为单位)。子午线以西的值的范围是-180度到0度。子午线以东的值的范围是0度到180度。
<latitude>
虚拟相机的纬度。赤道(0度)以北或以南的度数。值的范围是-90度到90度。
<altitude>
相机与地表之间的距离(以米为单位)。根据相机的 <heightMode> 或 <gx:heightMode> 进行解释。
<heading>
摄像头的方向(方位),以度为单位。默认值 = 0(正北方向)(参见下图)。值的范围是0度到360度。
<tilt>
相机绕 X 轴旋转的角度(以度为单位)。值为0表示垂直俯瞰地球(最常见的情况)。<tilt> 的值为90表示视线沿着地平线。值大于90表示视线向上倾斜,指向天空。<tilt> 的值最大为+180度。
<roll>
相机绕 Z 轴旋转的角度(以度为单位)。值的范围是-180度到+180度。
<altitudeMode>
指定如何解释为相机指定的 <height>。可能的值如下所示:
  • relativeToGround - (默认值)将 <altitude> 解释为地面以上的高度值(以米为单位)。如果相应点在水面之上,则会将 <altitude> 解释为海平面以上的高度值(以米为单位)。请参阅下面的 <gx:heightMode>,指定相对于海底的点。
  • clampToGround - 如果是应用于镜头,此设置与 relativeToGround 的效果相同,因为将镜头放置在与地形高度完全相同的高度上,意味着视点和地形相交(因此视线会受到阻挡)。
  • absolute - 将 <altitude> 解释为海平面以上的高度值(以米为单位)。
<gx:altitudeMode>
Google 扩展元素命名空间中的 KML 扩展元素,允许存在以海底为基准的高度。具体值包括:
  • relativeToSeaFloor - 将 <altitude> 解释为以海底为基准的高度值(以米为单位)。如果相应的点位于陆地上方而不是海面上方,则会将 <altitude> 解释为地面以上的高度。
  • clampToSeaFloor - 用于忽略 <altitude> 规范,并将 LookAt 置于海底。如果相应的点位于陆地上方而不是海面上方,则会将镜头置于地面上。

扩展源

包含方

返回页首

<ColorStyle>

语法

<!-- abstract element; do not create -->
<!-- ColorStyle id="ID" -->          <!-- IconStyle,LabelStyle,LineStyle,PolyStyle -->
  <color>ffffffff</color>            <!-- kml:color -->
  <colorMode>normal</colorMode>      <!-- kml:colorModeEnum: normal or random -->
<!-- /ColorStyle -->

说明

这是一个抽象元素,不能直接在 KML 文件中使用。它提供了一些元素,可用于指定扩展样式类型的颜色和颜色模式。

ColorStyle 的特有元素

<color>
颜色和不透明度 (alpha) 值以十六进制表示法表示。任何一种颜色的值的范围都是 0 到 255(00ff)。对于 Alpha 值,00 是完全透明的,ff 是完全不透明的。表达式的顺序是 aabbggrr,其中 aa=alpha(00 到 ff);bb=blue(00 到 ff);gg=green(00 到 ff);rr=red(00 到 ff)。例如,如果要对叠加层应用透明度为 50% 的蓝色,您需要指定以下内容:<color>7fff0000</color>,其中 alpha=0x7f、blue=0xff、green=0x00 和 red=0x00。
<colorMode>
<colorMode> 的值为 normal(无效果)和 Random随机值会向基本 <color> 应用随机线性标度,如下所示。
  • 要实现真正随机的颜色选择,请将基本 <color> 指定为白色 (ffffffff)。
  • 如果您指定了单个颜色成分(例如,表示红色的值 ff0000ff),系统就会选择该成分(红色)的随机颜色值。在这种情况下,值的范围是 00(黑色)到 ff(全红)。
  • 如果您为两种或全部三种颜色成分都指定了值,系统会对每种颜色成分应用随机线性标尺,所得结果的范围是黑色到为每种成分指定的最大值。
  • 颜色的透明度取决于 <color> 的 alpha 成分,而且在任何情况下都不会随机选择。

扩展源

扩展元素

返回页首

<Container>

语法

<!-- abstract element; do not create -->
<!-- Container id="ID" -->              <!-- Document,Folder -->
  <!-- inherited from Feature element -->
  <name>...</name>                      <!-- string -->
  <visibility>1</visibility>            <!-- boolean -->
  <open>0</open>                        <!-- boolean -->
  <address>...</address>                <!-- string -->
  <AddressDetails xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0">...
</AddressDetails> <!-- string --> <phoneNumber>...</phoneNumber> <!-- string -->
<Snippet maxLines="2">...</Snippet> <!-- string --> <description>...</description> <!-- string --> <AbstractView>...</AbstractView> <!-- LookAt or Camera --> <TimePrimitive>...</TimePrimitive> <styleUrl>...</styleUrl> <!-- anyURI --> <StyleSelector>...</StyleSelector> <Region>...</Region> <Metadata>...</Metadata> <atom:author>...<atom:author> <!-- xmlns:atom="http://www.w3.org/2005/Atom" --> <atom:link href=" "/> <!-- specific to Container -->
<!-- 0 or more Features --> <!-- /Container -->

说明

这是一个抽象元素,不能直接在 KML 文件中使用。一个 Container 元素持有一个或多个地图项,并且允许创建嵌套层次。

扩展源

扩展元素

返回页首

<Document>

语法

<Document id="ID">
  <!-- inherited from Feature element -->
  <name>...</name>                      <!-- string -->
  <visibility>1</visibility>            <!-- boolean -->
  <open>0</open>                        <!-- boolean -->
  <atom:author>...<atom:author>         <!-- xmlns:atom -->
  <atom:link href=" "/>                 <!-- xmlns:atom -->
  <address>...</address>                <!-- string -->
  <xal:AddressDetails>...</xal:AddressDetails>  <!-- xmlns:xal -->
<phoneNumber>...</phoneNumber> <!-- string -->
<Snippet maxLines="2">...</Snippet> <!-- string --> <description>...</description> <!-- string --> <AbstractView>...</AbstractView> <!-- Camera or LookAt --> <TimePrimitive>...</TimePrimitive> <styleUrl>...</styleUrl> <!-- anyURI --> <StyleSelector>...</StyleSelector> <Region>...</Region> <Metadata>...</Metadata> <!-- deprecated in KML 2.2 --> <ExtendedData>...</ExtendedData> <!-- new in KML 2.2 --> <!-- specific to Document --> <!-- 0 or more Schema elements --> <!-- 0 or more Feature elements --> </Document>

说明

Document 是地图项和样式的容器。如果您的 KML 文件使用共享样式,则该元素是必需的。建议您使用共享样式,具体步骤如下

  1. 在 Document 中定义所有样式。为每个样式分配一个唯一的 ID
  2. 在给定的地图项或 StyleMap 中,使用 <styleUrl> 元素引用样式 ID。

请注意,文档中的功能不会沿用共享样式。

每个地图项都必须明确引用它在 <styleUrl> 元素中使用的样式。对于适用于 Document 的样式(例如 ListStyle),Document 本身必须明确引用 <styleUrl>。例如

<Document>
  <Style id="myPrettyDocument">
   <ListStyle> ... </ListStyle>

  </Style>
  <styleUrl#myPrettyDocument">
  ...
</Document> 

请勿将共享样式放入一个文件夹,

下面的示例说明了如何使用共享样式。

示例

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Document.kml</name>
<open>1</open> <Style id="exampleStyleDocument">
<LabelStyle>
<color>ff0000cc</color>
</LabelStyle>
</Style>
<Placemark>
<name>Document Feature 1</name>
<styleUrl>#exampleStyleDocument</styleUrl>
<Point>
<coordinates>-122.371,37.816,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Document Feature 2</name>
<styleUrl>#exampleStyleDocument</styleUrl>
<Point>
<coordinates>-122.370,37.817,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>

扩展源

包含元素

返回页首

<gx:duration>

该元素是OGC KML 2.2标准的扩展元素,并且受 Google 地球5.0及更高版本的支持。了解详情

语法

<gx:duration>0.0</gx:duration>            <!-- double -->

说明

<gx:duration> 通过指定事件的时间范围来扩展 gx:TourPrimitive。该时间使用 XML 的 double 数据类型表示,以秒为单位。

duration 和 <gx:FlyTo>

如果 <gx:FlyTo> 元素中包含时长,则用于指定浏览器从前一个点飞到指定点所需的时长。

<gx:FlyTo>
  <gx:flyToMode>bounce</gx:flyToMode>
  <gx:duration>10.2</gx:duration>

  <!-- AbstractView -->
    ...
  <!-- /AbstractView -->
</gx:FlyTo>

duration 和 <gx:AnimatedUpdate>

指定更新所需的时长。在该时间段内,系统会动态平稳地将 integer、float 和 color 字段从原始值更改为新值;而 boolean、string 和其他不适合使用插值类型方法的值则会在此时间段结束后进行更新。

<gx:AnimatedUpdate>
  <gx:duration>5.0</gx:duration>
  <Update>

    ....

  </Update>
</gx:AnimatedUpdate>

 

<ExtendedData>

语法

<ExtendedData>                       
<Data name="string">
  <displayName>...</displayName>    <!-- string -->
   <value>...</value>                <!-- string -->
</Data> <SchemaData schemaUrl="anyURI">
<SimpleData name=""> ... </SimpleData>   <!-- string -->
</SchemaData> <namespace_prefix:other>...</namespace_prefix:other> </ExtendedData>

说明

ExtendedData 元素提供了三种向 KML 地图项(NetworkLink、Placemark、GroundOverlay、PhotoOverlay、ScreenOverlay、Document、Folder)添加自定义数据的方法。这些方法分别为:

  • 使用 <Data> 元素添加非类型化数据对/值对(基本)
  • 使用 <Schema> 元素声明新的类型化字段,然后使用 <SchemaData> 元素将它们实例化(高级)
  • 通过在 KML 文件中引用相应的外部命名空间,来引用在其他命名空间中定义的 XML 元素(基本)

您可以在单个包含多种数据段的 KML 文件或地图项中,结合使用这些方法。

有关详情,请参见“KML 主题”中的“添加自定义数据”。

ExtendedData 的特有元素

<Data name ="字符串"
创建非类型化名称/值对。名称可以有两个版本:namedisplayNamename 属性用于标识 KML 文件中的数据对。displayName 元素用于在 Google 地球中显示格式正确的名称(具有空格和 HTML 格式)时生效。在 <BalloonStyle> 的 <text> 元素中,表示法 $[name/displayName] 已替换为 <displayName>。如果您以这种格式替换 <Data> 元素的 name 属性的值(例如 $[holeYardage]),则属性值将替换为 <value>。默认情况下,地标的提示框会显示其名称/值。
<displayName>
name 的可选格式化版本,将用于显示。
<值>
数据对的值。
<Placemark>
  <name>Club house</name>
  <ExtendedData>
    <Data name="holeNumber">
      <value>1</value>
    </Data>
    <Data name="holeYardage">
      <value>234</value>
    </Data>
    <Data name="holePar">
      <value>4</value>
    </Data>
  </ExtendedData>
</Placemark>
<SchemaData schema="="anyURI">
此元素可与 <Schema> 结合使用,以将类型化自定义数据添加到 KML 地图项。Schema 元素(由 schemaUrl 属性标识)用于声明自定义数据类型。实际数据对象(自定义数据的“实例”)则需使用 SchemaData 元素来定义。
<schema网址> 可以是完整网址、对外部 KML 文件中定义的架构 ID 的引用,也可以是对同一 KML 文件中定义的架构 ID 的引用。以下所有规范均可接受
schemaUrl="http://host.com/PlacesIHaveLived.kml#my-schema-id"
schemaUrl="AnotherFile.kml#my-schema-id"
schemaUrl="#schema-id"   <!-- same file -->
Schema 元素始终是 Document 的子元素。ExtendedData 元素则是包含自定义数据的地图项的子元素。
<SimpleData name="字符串">
此元素会为由 name 属性标识的自定义数据字段分配一个值。该自定义数据字段的类型和名称则在 <Schema> 元素中声明。
以下示例展示了如何定义两个自定义数据元素
<Placemark>
  <name>Easy trail</name>
  <ExtendedData>
    <SchemaData schemaUrl="#TrailHeadTypeId">
      <SimpleData name="TrailHeadName">Pi in the sky</SimpleData>
      <SimpleData name="TrailLength">3.14159</SimpleData>
      <SimpleData name="ElevationGain">10</SimpleData>
    </SchemaData>
    </ExtendedData>
    <Point>
      <coordinates>-122.000,37.002</coordinates>
    </Point>
</Placemark>
<Placemark>
  <name>Difficult trail</name>
  <ExtendedData>
    <SchemaData schemaUrl="#TrailHeadTypeId">
      <SimpleData name="TrailHeadName">Mount Everest</SimpleData>
      <SimpleData name="TrailLength">347.45</SimpleData>
      <SimpleData name="ElevationGain">10000</SimpleData>
    </SchemaData>
  </ExtendedData>
  <Point>
    <coordinates>-122.000,37.002</coordinates>
  </Point>
</Placemark>
<命名空间前缀:<其他>
您可以利用此元素添加非类型化自定义数据。请务必在您文件的 <kml> 元素中引用该命名空间前缀,或将其作为 <ExtendedData> 元素的一个属性,并确保将该命名空间前缀用作每个数据元素名称的前缀。以这种方式添加的自定义数据会保留在 KML 文件中,但 Google 地球绝不会使用此类数据。此类数据一律随文件一起保存。
以下示例展示了如何使用“camp”命名空间前缀
<ExtendedData xmlns:prefix="camp">
<camp:number>14</camp:number>
<camp:parkingSpaces>2</camp:parkingSpaces>
<camp:tentSites>4</camp:tentSites>
</ExtendedData>

包含方

另请参见

<Feature>

语法

<!-- abstract element; do not create -->
<!-- Feature id="ID" -->                <!-- Document,Folder,
                                             NetworkLink,Placemark,
                                             GroundOverlay,PhotoOverlay,ScreenOverlay -->
  <name>...</name>                      <!-- string -->
  <visibility>1</visibility>            <!-- boolean -->
  <open>0</open>                        <!-- boolean -->
  <atom:author>...<atom:author>         <!-- xmlns:atom -->
  <atom:link href=" "/>            <!-- xmlns:atom -->
  <address>...</address>                <!-- string -->
  <xal:AddressDetails>...</xal:AddressDetails>  <!-- xmlns:xal -->
<phoneNumber>...</phoneNumber> <!-- string -->
<Snippet maxLines="2">...</Snippet> <!-- string --> <description>...</description> <!-- string --> <AbstractView>...</AbstractView> <!-- Camera or LookAt --> <TimePrimitive>...</TimePrimitive> <!-- TimeStamp or TimeSpan --> <styleUrl>...</styleUrl> <!-- anyURI --> <StyleSelector>...</StyleSelector> <Region>...</Region> <Metadata>...</Metadata> <!-- deprecated in KML 2.2 --> <ExtendedData>...</ExtendedData> <!-- new in KML 2.2 -->
<-- /Feature -->

说明

这是一个抽象元素,不能直接在 KML 文件中使用。下图展示了地图项的部分元素是如何在 Google 地球中显示的。

Feature 的特有元素

<name>
用户定义的文本在 3D 查看器中显示为对象的标签(例如,用于地标、文件夹或 NetworkLink)。
<visibility>
布尔值。指定在最初加载地图项时,是否要在3D查看器中绘制该地图项。若要显示地图项,相应地图项的所有上级元素的 <visibility> 标记也都必须设置为1。在 Google 地球列表视图中,每个地图项都有一个复选框,可供用户控制相应地图项的可见性。
<open>
布尔值。指定在首次加载到“位置”面板时文档或文件夹是会关闭还是打开。0=收起(默认值),1=展开。另请参阅 <ListStyle>。此元素仅适用于 Document、Folder 和 NetworkLink。
<atom:author>

KML 2.2 支持新的元素,用于在 KML 文件中包含作者和相关网站的数据。无论是在 Google 地球等地球浏览器中,还是在 Google 地图等其他应用中,此类信息都会显示在地理搜索结果中。KML 中使用的归属元素如下所示

  • atom:author 元素 - atom:name 的父元素
  • atom:name 元素 - 作者的名字
  • atom:link 元素 - 包含 href 属性
  • href 属性 - 包含 KML/KMZ 文件的网页网址

这些元素以 Atom 整合格式定义。如需查看完整规范,请访问 http://atompub.org(请参阅下面的示例)。

<atom:author> 元素是 <atom:name> 的父元素,后者指定 KML 地图项的作者。

<atom:link href="..." >
指定包含此 KML 或 KMZ 文件的网站的网址。请务必在使用此元素的所有 KML 文件中都添加其命名空间:xmlns:atom="http://www.w3.org/2005/Atom"(请参阅下面的示例)。
<address>
一个字符串值,表示以标准街道、城市、省级行政区和/或邮政编码形式表示的非结构化地址。您可以使用 <address> 标记(而非经度和纬度坐标)来指定某点的位置(不过,如果提供 <Point>,则其优先级高于 <address>)。若要在 Google 地球中了解该标记支持哪些语言区域,请访问 Google 地图帮助
<xal:AddressDetails>
结构化地址,格式为 xAL(即可扩展地址语言,即一种地址格式国际标准)。KML 只使用 <xal:AddressDetails> 进行 Google 地图地理编码。如需了解详情,请参阅 Google Maps API 文档目前,Google 地球不使用该元素,而是使用 <address>。请务必在使用该元素的任何 KML 文件中都添加其命名空间:xmlns:xal="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"
<phoneNumber>
一个表示电话号码的字符串值。该元素仅供谷歌手机地图使用。启用 Java 的手机的行业标准为RFC2806。
有关详情,请参阅 http://www.ietf.org/rfc /rfc2806.txt。 
<Snippet maxLines="2" >
功能的简短说明。在 Google 地球中,该说明会显示在“位置”面板中,地图项名称的下面。如果文件中未提供 Snippet 部分,则会使用 <description> 的前两行。在 Google 地球中,如果某个 Placemark 元素同时包含 description 和 Snippet 部分,则 <Snippet> 会显示在“位置”面板中的“地标”下,而 <description> 则会显示在该地标的说明提示框中。该标记不支持 HTML 标记。<Snippet> 包含一个 maxLines 属性(一个整数),用于指定要显示的行数上限。
<description>

在说明提示框中显示的内容(由用户提供)。

对于 <description> 元素,Google 地球5.0与 Google 地球4.3所支持的内容有所不同。下面列出了每个版本的特定信息,以及两个版本的通用信息。

Google 地球 5.0

Google 地球5.0(及更高版本)支持在说明提示框中显示纯文本内容以及完整的 HTML 和 JavaScript 内容。说明标记的内容由 WebKit 开源网络浏览器引擎呈现,且呈现效果与它在所有基于 WebKit 的浏览器中的呈现效果相同。

一般限制

一般不支持指向本地文件的链接。这可以防止恶意代码破坏您的系统或访问您的数据。如果您希望允许访问您的本地文件系统,请依次选择偏好设置 > 允许访问本地文件和个人数据。如果该元素包含在 <img> 标记中,则始终支持指向本地文件系统中的图片文件的链接。

可以访问压缩为 KMZ 文件的内容(即使该内容是在本地文件系统中)。

Cookie 处于启用状态,但根据同源政策的规定,本地内容不会与其他任何内容(包括其他本地内容)共享网域。

HTML

在大多数情况下,HTML 在该版本中的呈现效果与它在所有 WebKit 浏览器中的呈现效果相同。

当目标包含在直接写入 KML 的 HTML 中时,系统会将其忽略;所有的此类链接都会打开,就像将目标设置为 _blank 一样。系统会忽略所有指定的目标。

但是,包含在 iFrame 中的 HTML,或者通过 JavaScript 或 DHTML 动态生成的 HTML,会使用 target="_self" 作为默认值。您还可以指定其他目标,系统也会支持这些目标。

不支持从包含在 iFrame 内的 HTML 中定位 KMZ 文件的内容、本地锚点链接和 ;flyto 方法。

如果用户为 iFrame 的宽度指定了 width="100%",那么 iFrame 的宽度将取决于提示框中的所有其他内容 - 计算布局大小时,它本应会被忽略。此规则也适用于提示框内的其他所有板块元素。

JavaScript

支持大多数 JavaScript。无法创建对话框 - 不会显示 alert() 和 prompt() 等函数。不过,与其他错误和异常一样,它们也会写入系统控制台。

CSS

不支持 CSS。与常规网络浏览器中的 CSS 一样,CSS 可用于设计文本和页面元素样式,并控制说明提示框的大小和外观。

Google 地球 4.3

<description> 元素支持纯文本和 HTML 格式元素的子集,其中包括表格(参见下面的 KML 示例)。它不支持其他基于网络的技术,例如动态网页标记(PHP、JSP、ASP)、脚本语言(VBScript、Javascript),也不支持应用语言(Java、Python)。Google 地球 4.2 版支持视频。(请参见下面的示例)。

基本信息

如果您的说明不包含 HTML 标记,那么 Google 地球将会尝试将其格式化,即用 <br> 替换新行并用锚标记封装网址。万维网的有效网址字符串会自动转换为该网址的超链接(例如 http://www.google.com)。因此,您无需在网址两边添加 <a href="http://.."></a> 标记,即可实现简单的链接。

当使用 HTML 代码针对特定字词创建超链接或者在 HTML 内容中添加图片时,您必须使用 HTML 实体引用或 CDATA 元素,来避开尖括号、省略号和其他特殊字符。CDATA 元素会告知 XML 解析器忽略括号内使用的特殊字符。该元素的形式如下:

<![CDATA[
  special characters here
]]> 

如果您不喜欢使用 CDATA 元素,则可以使用实体引用来代替所有的特殊字符。

<description>
  <![CDATA[
This is an image
<img src="icon.jpg">
  ]]>
</description>

通过使用 <a> 元素指定的其他行为

KML 支持在 <a> 元素中使用以下两个属性:hreftype

锚元素 <a> 包含用于指定网址的 href 属性。

如果 href 是 KML 文件,且文件扩展名为 .KML.kmz,则 Google 地球会在用户点击该文件时直接加载该文件。如果网址以 Google 地球未知的扩展名(例如 .html)结尾,则系统会将网址发送到浏览器。

href 可以是片段网址(即,# 符号后跟 KML 标识符的网址)。用户点击包含片段网址的链接时,默认情况下,浏览器会飞到 ID 与该片段匹配的地图项。如果地图项具有 LookAt 或 Camera 元素,那么您可以从指定的视点查看该地图项。

您可以通过向 fragment 网址附加以下三个字符串之一进一步指定该行为

  • ;flyto(默认)- 飞到地图项
  • 气球:打开地图项的提示框,但不飞到该地图项
  • ;气球飞行 - 打开地图项的提示框,并飞到该地图项

例如,以下代码表示打开文件 CraftsFairs.KML,飞到 ID 为“Albuquerque”的地标,然后打开其提示框

<description>
  <![CDATA[ 
<a href="http://myServer.com/CraftsFairs.kml#Albuquerque;balloonFlyto">
One of the Best Art Shows in the West</a> ]]> </description>

如果 href 不以 .KML.kmz 结尾,则 <a> 元素中会使用 type 属性,但您需要在 KML 的上下文中解释引用。指定以下内容

type="application/vnd.google-earth.kml+xml" 

例如,以下网址虽然使用文件扩展名 .php,但使用 type 属性通知 Google 地球应尝试加载该文件

<a href="myserver.com/cgi-bin/generate-kml.php#placemark123"
   type="application/vnd.google-earth.kml+xml">
<AbstractView>
定义与派生自地图项的任何元素相关联的视角。请参阅 <Camera><LookAt>
<TimePrimitive>
将此功能与时间段 (<TimeSpan>) 或时间点 (<TimeStamp>) 相关联。
<styleUrl>
文档中定义的 <Style><StyleMap> 的网址。如果样式位于同一文件中,请使用 # 引用。如果样式是在外部文件中定义的,请使用完整网址以及 # 个引用。例如:
<styleUrl>#myIconStyleID</styleUrl>
<styleUrl>http://someserver.com/somestylefile.xml#restaurant</styleUrl>
<styleUrl>eateries.kml#my-lunch-spot</styleUrl>
<StyleSelector>
可以定义一个或多个样式和 StyleMap,以自定义派生自地图项或地标中的几何图形的任何元素的外观。(参见 <BalloonStyle><ListStyle><StyleSelector>以及派生自 <ColorStyle> 的样式)。地图项中定义的样式称为“内嵌样式”,它仅适用于包含它的地图项。样式定义为 <Document> 的子项,称为“共享样式”。必须为共享样式定义 id。<Document> 中的一个或多个地图项引用了此 ID。如果某个样式元素同时以共享样式和地图项的内嵌样式(即 Folder、GroundOverlay、NetworkLink、Placemark 或 ScreenOverlay)定义,那么地图项的内嵌样式的值优先于共享样式的值。
<Region>
仅当某个区域处于活动状态时,才会绘制与该区域关联的地图项和几何图形。请参阅 <Region>
<Metadata>
<ExtendedData>
可让您向 KML 文件添加自定义数据。这些数据可以是 (1) 引用外部 XML 架构的数据、(2) 非类型化数据/值对,或 (3) 类型化数据。给定的 KML 地图项可以包含这些类型的自定义数据的组合。

说明 中的 HTML 元素用法

该示例介绍了 Google 地球4.3中 <description> 元素支持的完整 HTML 元素集。Google 地球5.0及更高版本支持完整的 HTML 和 JavaScript。

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Placemark>
<name>Feature.kml</name> <Snippet maxLines="4">
The snippet is a way of
providing an alternative
description that will be
shown in the List view.
</Snippet>
<description>
<![CDATA[
Styles: <i>Italics</i>, <b>Bold</b>, <u>Underlined</u>,
<s>Strike Out</s>, subscript<sub>subscript</sub>,
superscript<sup>superscript</sup>,
<big>Big</big>, <small>Small</small>, <tt>Typewriter</tt>,
<em>Emphasized</em>, <strong>Strong</strong>, <code>Code</code>
<hr />
Fonts:
<font color="red">red by name</font>,
<font color="#408010">leaf green by hexadecimal RGB</font>,
<font size=1>size 1</font>, <font size=2>size 2</font>,
<font size=3>size 3</font>, <font size=4>size 4</font>,
<font size=5>size 5</font>, <font size=6>size 6</font>,
<font size=7>size 7</font>,
<font face=times>Times</font>,
<font face=verdana>Verdana</font>,
<font face=arial>Arial</font>
<br/>
<hr />
Links:
<a href="http://doc.trolltech.com/3.3/qstylesheet.html">
QT Rich Text Rendering
</a>
<br />
<hr />
Alignment:
<br />
<p align=left>left</p><p align=center>center</p>
<p align=right>right</p>
<hr />
Ordered Lists:
<br />
<ol><li>First</li><li>Second</li><li>Third</li></ol>
<ol type="a"><li>First</li><li>Second</li><li>Third</li></ol>
<ol type="A"><li>First</li><li>Second</li><li>Third</li></ol>
<hr />
Unordered Lists:
<br />
<ul><li>A</li><li>B</li><li>C</li></ul>
<ul type="circle"><li>A</li><li>B</li><li>C</li></ul>
<ul type="square"><li>A</li><li>B</li><li>C</li></ul>
<hr />
Definitions:
<br />
<dl>
<dt>Scrumpy</dt>
<dd>Hard English cider from the west country</dd>
<dt>Pentanque</dt>
<dd>A form of boules where the goal is to throw metal ball as
close as possible to a jack</dd>
</dl>
<hr />
Block Quote:
<br />
<blockquote>
We shall not cease from exploration<br />
And the end of all our exploring<br />
Will be to arrive where we started<br />
And know the place for the first time
</blockquote>
<br />
<hr />
Centered:
<br />
<center>See, I have a Rhyme assisting<br />
my feeble brain,<br />
its tasks oft-times resisting!</center>
<hr />
Headings:
<br />
<h1>Header 1</h1>
<h2>Header 2</h2>
<h3>Header 3</h3>
<h3>Header 4</h4>
<h3>Header 5</h5>
<hr />
Images:
<br />
<img src="icon.jpg">
and we have a link http://www.google.com.]]> </description> <Point>
<coordinates>-122.378927,37.826793,0</coordinates>
</Point>
</Placemark>
</kml>

归属元素使用示例

此示例展示了如何使用 Atom 命名空间中的 <atom:author>、<atom:name> 和 <atom:link> 元素。请注意,您需要在 <kml> 元素中引用该命名空间。

<kml xmlns="http://www.opengis.net/kml/2.2"
     xmlns:atom="http://www.w3.org/2005/Atom"> 
  <Document>
    <atom:author>
      <atom:name>J. K. Rowling</atom:name>
    </atom:author>
    <atom:link href="http://www.harrypotter.com" />
    <Placemark>
      <name>Hogwarts</name>
      <Point>
        <coordinates>1,1</coordinates>
      </Point>
    </Placemark>
    <Placemark>
      <name>Little Hangleton</name>
      <Point>
        <coordinates>1,2</coordinates>
      </Point>
    </Placemark>
  </Document>
</kml>

示例视频

此示例展示了如何在提示框中嵌入 Flash 视频。

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document> <name>Video Example</name>
<Style id="sn_blue-dot_copy3">
<IconStyle>
<Icon>
<href>http://www.google.com/intl/en_us/mapfiles/ms/icons/blue-dot.png</href>
</Icon>
</IconStyle>
</Style>
<Placemark>
<name>Placemark</name>
<description>
<![CDATA[<div style="font-size:larger">
<div>
<div style="width: 212px; font-size: 12px;">
<b>The Spaghetti Film</b>
</div>
<div style="font-size: 11px;">
<a target="_blank" href="http://www.youtube.com/?v=FICUvrVlyXc">
http://www.youtube.com/?v=FICUvrVlyXc</a><br>
</div><br>
<div style="margin-left: auto; margin-right:auto;">
<object height="175" width="212">
<param value="http://www.youtube.com/v/FICUvrVlyXc" name="movie">
<param value="transparent" name="wmode">
<embed wmode="transparent" type="application/x-shockwave-flash"
src="http://www.youtube.com/v/FICUvrVlyXc" height="175"
width="212">

</object>
</div>
</div>
</div>
<div style="font-size: smaller; margin-top: 1em;">Saved from
<a href="http://maps.google.com/ig/add?synd=mpl&pid=mpl&moduleurl=
http:%2F%2Fwww.google.com%2Fig%2Fmodules%2Fmapplets-youtube.xml&hl=en&gl=us">
YouTubeVideos</a>
</div>
]]>
</description>
<styleUrl>#sn_blue-dot_copy3</styleUrl>
<Point>
<coordinates>-93.47875999999999,45.083248,0</coordinates>
</Point>
</Placemark>
</Document> </kml>

扩展源

扩展元素

<gx:FlyTo>

该元素是OGC KML 2.2标准的扩展元素,并且受 Google 地球5.0及更高版本的支持。了解详情

语法

<gx:FlyTo id="ID">
  <gx:duration>0.0</gx:duration>         <!-- double -->
  <gx:flyToMode>bounce</gx:flyToMode>    <!-- smooth or bounce -->
  <!-- AbstractView -->                        <!-- Camera or LookAt -->
    ...
  <!-- /AbstractView -->
</gx:FlyTo>

说明

<gx:FlyTo> 用于指定浏览器在游览期间要前往的空间点。它必须包含一个 AbstractView,且应包含 <gx:duration><gx:flyToMode> 元素,这两个元素分别指定从当前点飞到指定点所需的时间,以及飞行方法。

<gx:flyToMode>

<gx:flyToMode> 有两个可接受的值:smoothbounce

  • Smooth FlyTo 允许从一点到另一点(逐点)的不间断飞行。一个不间断的 smooth FlyTo 系列在开始和结束点的速度均为零,并且在中间每一个点时都不会减速。以下任何元素都会损坏一系列顺畅的 FlyTo:
    • <gx:flyToMode>bounce</gx:flyToMode>
    • <gx:Wait>
    这意味着,在上述任何元素之前,smotive FlyTo 中的速度都将为零。<gx:AnimatedUpdate> 元素不会中断 smooth FlyTo 系列。

  • Bounce FlyTo 在开始和结束点的速度均为零。

示例

<gx:FlyTo>
<gx:duration>2.55</gx:duration>
<gx:flyToMode>smooth</gx:flyToMode>
<Camera>
<longitude>-113.084448</longitude>
<latitude>36.567081</latitude>
<altitude>41277.571403</altitude>
<heading>116.150227</heading>
<altitudeMode>absolute</altitudeMode>
</Camera>
</gx:FlyTo>

扩展源

包含元素

<Folder>

语法

<Folder id="ID">
  <!-- inherited from Feature element -->
  <name>...</name>                      <!-- string -->
  <visibility>1</visibility>            <!-- boolean -->
  <open>0</open>                        <!-- boolean -->
  <atom:author>...<atom:author>         <!-- xmlns:atom -->
  <atom:link href=" "/>            <!-- xmlns:atom -->
  <address>...</address>                <!-- string -->
  <xal:AddressDetails>...</xal:AddressDetails>  <!-- xmlns:xal -->
<phoneNumber>...</phoneNumber> <!-- string -->
<Snippet maxLines="2">...</Snippet> <!-- string --> <description>...</description> <!-- string --> <AbstractView>...</AbstractView> <!-- Camera or LookAt --> <TimePrimitive>...</TimePrimitive> <styleUrl>...</styleUrl> <!-- anyURI --> <StyleSelector>...</StyleSelector> <Region>...</Region> <Metadata>...</Metadata> <!-- deprecated in KML 2.2 --> <ExtendedData>...</ExtendedData> <!-- specific to Folder --> <!-- 0 or more Feature elements --> </Folder>

说明

Folder 用于按层次结构排列其他地图项(Folder、Placemark、NetworkLink 或 Overlay)。只有将某个地图项及其所有上级元素都设为可见时,系统才会显示该地图项。

示例

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Folder>
<name>Folder.kml</name> <open>1</open>
<description>
A folder is a container that can hold multiple other objects
</description>
<Placemark>
<name>Folder object 1 (Placemark)</name>
<Point>
<coordinates>-122.377588,37.830266,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Folder object 2 (Polygon)</name>
<Polygon>
<outerBoundaryIs>
<LinearRing>
<coordinates>
-122.377830,37.830445,0
-122.377576,37.830631,0
-122.377840,37.830642,0
-122.377830,37.830445,0
</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</Placemark>
<Placemark>
<name>Folder object 3 (Path)</name>
<LineString>
<tessellate>1</tessellate>
<coordinates>
-122.378009,37.830128,0 -122.377885,37.830379,0
</coordinates>
</LineString>
</Placemark>
</Folder>
</kml>

扩展源

包含元素

<Geometry>

语法

<!-- abstract element; do not create -->
<!-- Geometry id="ID" -->
                                              <!-- Point,LineString,LinearRing,
                                               Polygon,MultiGeometry,Model,
                                               gx:Track -->
<!-- /Geometry -->

说明

这是一个抽象元素,不能直接在 KML 文件中使用。它为所有派生的 Geometry 对象提供占位符对象。

扩展源

扩展元素

<GroundOverlay>

语法

<GroundOverlay id="ID">
  <!-- inherited from Feature element -->
  <name>...</name>                      <!-- string -->
  <visibility>1</visibility>            <!-- boolean -->
  <open>0</open>                        <!-- boolean -->
  <atom:author>...<atom:author>         <!-- xmlns:atom -->
  <atom:link href=" "/>                <!-- xmlns:atom -->
  <address>...</address>                <!-- string -->
  <xal:AddressDetails>...</xal:AddressDetails>  <!-- xmlns:xal -->
<phoneNumber>...</phoneNumber> <!-- string -->
<Snippet maxLines="2">...</Snippet> <!-- string --> <description>...</description> <!-- string --> <AbstractView>...</AbstractView> <!-- Camera or LookAt --> <TimePrimitive>...</TimePrimitive> <styleUrl>...</styleUrl> <!-- anyURI --> <StyleSelector>...</StyleSelector> <Region>...</Region> <Metadata>...</Metadata> <!-- deprecated in KML 2.2 --> <ExtendedData>...</ExtendedData> <!-- new in KML 2.2 --> <!-- inherited from Overlay element --> <color>ffffffff</color> <!-- kml:color --> <drawOrder>0</drawOrder> <!-- int --> <Icon>...</Icon> <!-- specific to GroundOverlay --> <altitude>0</altitude> <!-- double --> <altitudeMode>clampToGround</altitudeMode> <!-- kml:altitudeModeEnum: clampToGround or absolute --> <!-- or, substitute gx:altitudeMode: clampToSeaFloor or relativeToSeaFloor --> <LatLonBox> <north>...</north> <! kml:angle90 --> <south>...</south> <! kml:angle90 --> <east>...</east> <! kml:angle180 --> <west>...</west> <! kml:angle180 --> <rotation>0</rotation> <! kml:angle180 --> </LatLonBox> <gx:LatLonQuad> <coordinates>...</coordinates> <!-- four lon,lat tuples --> </gx:LatLonQuad> </GroundOverlay>

说明

该元素会绘制地形上叠加的图像叠加层。<Icon> 的子元素 <href> 会指定将用作叠加层的图片。该文件可以存储在本地文件系统中,也可以存储在网络服务器中。如果省略此元素或该元素不包含 <href>,系统会使用地面叠加层定义的颜色和 LatLonBox 边界绘制一个矩形。

GroundOverlay 的特有元素

<altitude>
:指定地表以上的距离(以米为单位),并根据海拔模式进行解释。
<altitudeMode>
指定如何解读 <height>。可能的值包括:
  • clampToGround -(默认)表示忽略高度规范,并将叠加层叠加到相应地形上。
  • absolute - 设置叠加层相对于海平面的高度,无论该元素下的地形的实际高度如何。例如,如果您用 absolute 高度模式将叠加层的高度设置为10米,那么当下面的地形也高于海平面10米时,叠加层看上去就在地平面上。如果地形高于海平面3米,那么叠加层看上去就悬空高于该地形7米。
<gx:heightMode>
Google 扩展元素命名空间中的 KML 扩展元素,允许存在以海底为基准的高度。具体值包括:
  • relativeToSeaFloor - 将 <altitude> 解释为以海底为基准的高度值(以米为单位)。如果相应的点位于陆地上方而不是海面上方,则会将 <altitude> 解释为地面以上的高度。
  • clampToSeaFloor - 用于忽略 <height> 规范,并将叠加层叠加到海底。如果该点位于陆地上方而不是海面上方,则系统会将叠加层放置在地面上。
<LatLonBox>
指定地面叠加层边界框的顶部、底部、右侧和左侧对齐的位置。
  • <north> 指定边界框北边缘的纬度(以 0 到 ±90 的十进制度数表示)。
  • <south> :指定边界框南边缘的纬度(以 0 到 ±90 的十进制度数表示)。
  • <east> 指定边界框东边缘的经度(以 0 到 ±180 的十进制度数表示)。(对于与经度 180° 子午线重叠的叠加层,值可超出该范围。)
  • <west> 指定边界框西边缘的经度(以 0 到 ±180 的十进制度数表示)。(对于与经度 180° 子午线重叠的叠加层,值可超出该范围。)
  • <rotation>:指定叠加层围绕其中心旋转的角度(以度为单位)。值可以为 ±180。默认值为 0(北)。旋转按照逆时针方向指定。
<LatLonBox>
   <north>48.25475939255556</north>
   <south>48.25207367852141</south>
   <east>-90.86591508839973</east>
   <west>-90.8714285289695</west>
   <rotation>39.37878630116985</rotation>
</LatLonBox> 
<gx:LatLonQuad>
用于非矩形的四边形地面叠加层。

示例

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<GroundOverlay>
<name>GroundOverlay.kml</name>
<color>7fffffff</color>
<drawOrder>1</drawOrder>
<Icon>
<href>http://www.google.com/intl/en/images/logo.gif</href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>86400</refreshInterval>
<viewBoundScale>0.75</viewBoundScale>
</Icon>
<LatLonBox>
<north>37.83234</north>
<south>37.832122</south>
<east>-122.373033</east>
<west>-122.373724</west>
<rotation>45</rotation>
</LatLonBox>
</GroundOverlay>
</kml>

扩展源

包含方

<Icon>

语法

<Icon id="ID">
  <!-- specific to Icon -->
  <href>...</href>                         <!-- anyURI -->
  <gx:x>0<gx:x/>                           <!-- int -->
  <gx:y>0<gx:y/>                           <!-- int -->
  <gx:w>-1<gx:w/>                          <!-- int -->
  <gx:h>-1<gx:h/>                          <!-- int -->
  <refreshMode>onChange</refreshMode>
    <!-- kml:refreshModeEnum: onChange, onInterval, or onExpire -->
  <refreshInterval>4</refreshInterval>     <!-- float -->
  <viewRefreshMode>never</viewRefreshMode>
    <!-- kml:viewRefreshModeEnum: never, onStop, onRequest, onRegion -->
  <viewRefreshTime>4</viewRefreshTime>     <!-- float -->
  <viewBoundScale>1</viewBoundScale>       <!-- float -->
  <viewFormat>...</viewFormat>             <!-- string -->
  <httpQuery>...</httpQuery>               <!-- string -->
</Icon>

说明

定义与图标样式或叠加层相关联的图片。所需的子元素 <href> 会定义将用作叠加层或地标图标的图片的位置。该位置可以位于本地文件系统中,也可以位于远程网络服务器中。<gx:x>、<gx:y>、<gx:w> 和 <gx:h> 元素用于从包含多个图标的图片(通常称为图标调色板)中选择一个图标。

<Icon>
  <href>Sunset.jpg</href>   <!-- Here, the image contains only one icon -->
</Icon>
<Icon>
  <href>/home/mydir/myiconpalette.jpg</href>
  <gx:w>138</gx:w>
  <gx:h>138</gx:h>
    <!-- Since x and y values are omitted, these measurements are made starting at
    the lower-left corner of the icon palette image -->
</Icon>

Icon 的特有元素

<href>
用于加载图标的 HTTP 地址或本地文件规范。
<gx:x>
<gx:y>
如果 <href> 指定了图标调色板,则这些元素会标识相对于图标调色板左下角的偏移量(以像素为单位)。如果没有为 x 和 y 指定值,则系统会假定图标调色板的左下角是要使用的图标的左下角。
<gx:w>
<gx:h>
如果 <href> 指定了图标调色板,则这些元素会指定要使用的宽度 (<gx:w>) 和高度 (<gx:h>)(以像素为单位)。
<refreshMode>
如需了解 <refreshMode> 和下面列出的其他元素,请参阅 <Link>
<refreshInterval>
<viewRefreshMode>
<viewRefreshTime>
<viewBoundScale>
<viewFormat>
<httpQuery>

包含方

<IconStyle>

语法

<IconStyle id="ID">
  <!-- inherited from ColorStyle -->
  <color>ffffffff</color>            <!-- kml:color -->
  <colorMode>normal</colorMode>      <!-- kml:colorModeEnum:normal or random -->

  <!-- specific to IconStyle -->
  <scale>1</scale>                   <!-- float -->
  <heading>0</heading>               <!-- float -->
  <Icon>
    <href>...</href>
  </Icon>
  <hotSpot x="0.5"  y="0.5"
    xunits="fraction" yunits="fraction"/>    <!-- kml:vec2 -->
</IconStyle>

说明

指定如何在“位置”面板和 Google 地球的3D查看器中绘制点地标的图标。<Icon> 元素会指定图标图片。<scale> 元素用于指定图标的 x, y 缩放比例。在 <IconStyle> 的 <color> 元素中指定的颜色会与 <Icon> 的颜色混合。

IconStyle 的特有元素

<scale>
调整图标大小。

请注意:<geomScale> 标记已弃用,请改用 <scale>。

<heading>
方向(即北、南、东、西),以度为单位。默认值 = 0(北)(参见下图)。值的范围是0度到360度。
<Icon>
自定义图标。在 <IconStyle> 中,<Icon> 的唯一子元素是 <href>:
  • <href>:用于加载图标的 HTTP 地址或本地文件规范。
<hotSpot x="0.5" y="0.5" xunits="fraction" yunits="fraction">
指定图标内的位置,该位置“锚定”于地标中指定的 <Point>。可通过三种不同的方式指定 xy 值:按像素 ("pixels")、以分数表示 ("fraction"),或以插入像素("insetPixels") 表示,即与图标右上角的偏移(以像素为单位)。可以以不同的方式指定 x 和 y 位置,例如,x 可以以像素为单位,而 y 可以是小数。坐标系的原点位于图标的左下角。
  • x - 表示图标上点的 x 分量的像素数、图标比例或像素插入。
  • y - 表示图标上点的 y 分量的像素数、图标比例或像素插入。
  • xunits - 指定 x 值时所使用的单位。fraction 值表示 x 值是图标的比例。pixels 值表示以像素为单位的 x 值。insetPixels 值表示以图标右边缘为起始的缩进。
  • yunits - 指定 y 值时所使用的单位。fraction 值表示 y 值是图标的比例。pixels 值表示以像素为单位的 y 值。insetPixels 值表示以图标上边缘为的缩进。

示例

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Style id="randomColorIcon">
<IconStyle>
<color>ff00ff00</color>
<colorMode>random</colorMode>
<scale>1.1</scale>
<Icon>
<href>http://maps.google.com/mapfiles/kml/pal3/icon21.png</href>
</Icon>
</IconStyle>
</Style>
<Placemark>
<name>IconStyle.kml</name>
<styleUrl>#randomColorIcon</styleUrl>
<Point>
<coordinates>-122.36868,37.831145,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>

扩展源

包含方

包含元素

<kml>

语法

<kml xmlns="http://www.opengis.net/kml/2.2" hint="target=sky"> ... </kml>

说明

KML 文件的根元素。该元素为必需元素。它遵循相应文件开头部分的 xml 声明。hint 属性用作一个信号,指示 Google 地球将文件显示为天体数据。

<KML> 元素还可能包含文件中引用的任何外部 XML 架构的命名空间。

基本 <KML> 元素包含 0 个或 1 个地图项以及 0 个或 1 个 NetworkLinkControl

<kml xmlns="http://www.opengis.net/kml/2.2">
  <NetworkLinkControl> ... </NetworkLinkControl>
  <!-- 0 or 1 Feature elements -->
</kml>

<LabelStyle>

语法

<LabelStyle id="ID">
  <!-- inherited from ColorStyle -->
  <color>ffffffff</color>            <!-- kml:color -->
  <colorMode>normal</colorMode>      <!-- kml:colorModeEnum: normal or random -->

  <!-- specific to LabelStyle -->
  <scale>1</scale>                   <!-- float -->
</LabelStyle>

说明

指定如何在3D查看器中绘制地图项的 <name>。您可以指定标签(名称)的自定义颜色、颜色模式和比例。

请注意:<labelColor> 标记已被弃用,现改用 <LabelStyle>。

<LabelStyle> 的特有元素

<scale>
调整标签大小。

示例

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Style id="randomLabelColor">
<LabelStyle>
<color>ff0000cc</color>
<colorMode>random</colorMode>
<scale>1.5</scale>
</LabelStyle>
</Style>
<Placemark>
<name>LabelStyle.kml</name>
<styleUrl>#randomLabelColor</styleUrl>
<Point>
<coordinates>-122.367375,37.829192,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>

扩展源

包含方

<gx:LatLonQuad>

该元素是OGC KML 2.2标准的扩展元素,并且受 Google 地球5.0及更高版本的支持。了解详情

语法

<GroundOverlay id="ID">
  ...
  <Icon>...</Icon>
  <altitude>0</altitude>
  <altitudeMode>clampToGround</altitudeMode>                   <!-- or absolute -->
         <!-- can substitute <gx:altitudeMode>clampToSeaFloor</gx:altitudeMode> -->

  <gx:LatLonQuad>
    <coordinates>...</coordinates>              <!-- four lon,lat tuples -->
  </gx:LatLonQuad>
</GroundOverlay>

说明

允许使用非矩形的四边形地面叠加层。

指定定义叠加层区域的四边形的四角顶点的坐标。您实际上需要提供四个坐标元组,每个元组均由经度和纬度的浮点值组成。请在元组间插入空格,但勿在元组内插入空格。您必须以逆时针方向来指定坐标,并且第一个坐标需对应叠加层图片的左下角。这些角所描述的形状必须是凸面的。

在任意元组中插入的第三个值(表示高度)均会被忽略。海拔高度使用 <altitude><altitudeMode>(或 <gx:altitudeMode>)来扩展 <GroundOverlay>。允许的海拔模式为绝对clampToGroundclampToSeaFloor

示例

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2"> <GroundOverlay> <name>gx:LatLonQuad Example</name> <Icon> <href>http://developers.google.com/kml/documentation/images/rectangle.gif</href> <viewBoundScale>0.75</viewBoundScale> </Icon> <gx:LatLonQuad> <coordinates> 81.601884,44.160723 83.529902,43.665148 82.947737,44.248831 81.509322,44.321015 </coordinates> </gx:LatLonQuad> </GroundOverlay> </kml>

扩展源

包含方

<LinearRing>

语法

<LinearRing id="ID">
  <!-- specific to LinearRing -->
  <gx:altitudeOffset>0</gx:altitudeOffset>   <!-- double -->
  <extrude>0</extrude>                       <!-- boolean -->
  <tessellate>0</tessellate>                 <!-- boolean -->
  <altitudeMode>clampToGround</altitudeMode>
    <!-- kml:altitudeModeEnum: clampToGround, relativeToGround, or absolute -->
    <!-- or, substitute gx:altitudeMode: clampToSeaFloor, relativeToSeaFloor -->
  <coordinates>...</coordinates>             <!-- lon,lat[,alt] tuples -->
</LinearRing>

说明

定义闭合的线条字符串,通常为多边形的外边界。或者,LinearRing 也可用作多边形的内边界,以在多边形中创建孔。一个多边形可包含多个用作内边界的 <LinearRing> 元素。

注意:在 Google 地球中,<heightMode> 为 clampToGround 的多边形是沿着同位线方向;而 <heightMode> 为 clampToGround 的 LinearRing(本身)则是沿着大圆方向。

LinearRing 的特有元素

<gx:altitudeOffset>
Google 扩展元素命名空间中的 KML 扩展项,用于修改高度值的呈现方式。此偏移量可让您将整个 LinearRing 作为一个整体上下移动,而不用修改构成 LinearRing 的所有单个坐标值(虽然在显示 LinearRing 时使用的是高度偏移量值,但原来的高度值会保留在 KML 文件中)。其值以米为单位。
<extrude>
布尔值。指定是否将 LinearRing 连接到地面。要使该几何图形向外凸出,高度模式必须为 relativeToGroundrelativeToSeaFloor绝对。只有 LinearRing 的端点才会凸出,而几何图形的中心则不会。这些端点凸出的方向为地球球体中心。
<tessellate>
布尔值。指定是否允许 LinearRing 沿着地形方向。如需启用曲面细分,<heightMode> 的值必须为 clampToGroundclampToSeaFloor。非常大的 LinearRing 应启用地形镶嵌,以便其沿着地球的曲率铺设(否则它们会进入地下而被隐藏)。
<altitudeMode>
指定如何解释 <Coordinates> 元素中的高度分量。可能的值包括:
  • clampToGround -(默认)表示忽略高度规范(例如在 <Coordinates> 标记中)。
  • relativeToGround - 设置相应元素相对于特定位置实际地面高度的高度值。例如,如果某位置的地面高度正好与海平面齐平,且某点的高度被设置为9米,那么在该模式下点地标高度的图标高度是9米。然而,如果是在地面高度高于海平面10米的位置上设置相同的坐标,则该坐标的高度是19米。该模式的典型应用情境是放置电话线杆或滑雪缆索。
  • absolute - 设置相对于海平面的坐标高度,无论该元素下的地形的实际高度如何。例如,如果您使用绝对高度模式将坐标高度设置为 10 米,那么当下面的地形也高于海平面 10 米时,点地标的图标看上去就在地面上。如果地形高于海平面3米,那么该地标看上去就悬空高于该地形7米。该模式的典型应用情境是放置飞机。
<gx:heightMode>
Google 扩展元素命名空间中的 KML 扩展元素,允许存在以海底为基准的高度。具体值包括:
  • relativeToSeaFloor - 将 <altitude> 解释为以海底为基准的高度值(以米为单位)。如果该点位于陆地上方而不是海面上方,则会将 <altitude> 解释为地面以上的高度。
  • clampToSeaFloor - 用于忽略 <altitude> 规范,并将相应的点置于海底。如果该点位于陆地上方而不是海面上方,则会将该点置于地面上。
<coordinates>(必需)
四个或更多的元组,每个元组均由经度、纬度和高度的浮点值组成。高度分量为可选分量。请勿在元组中加入空格。最后一个坐标必须和第一个坐标相同。坐标只能用十进制的度数表示。

示例

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Placemark>
<name>LinearRing.kml</name>
<Polygon>
<outerBoundaryIs>
<LinearRing>
<coordinates> -122.365662,37.826988,0 -122.365202,37.826302,0 -122.364581,37.82655,0 -122.365038,37.827237,0 -122.365662,37.826988,0 </coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</Placemark>
</kml>

扩展源

包含方

<LineString>

语法

<LineString id="ID">
  <!-- specific to LineString -->
  <gx:altitudeOffset>0</gx:altitudeOffset>  <!-- double -->
  <extrude>0</extrude>                      <!-- boolean -->
  <tessellate>0</tessellate>                <!-- boolean -->
  <altitudeMode>clampToGround</altitudeMode>
      <!-- kml:altitudeModeEnum: clampToGround, relativeToGround, or absolute -->
      <!-- or, substitute gx:altitudeMode: clampToSeaFloor, relativeToSeaFloor -->
  <gx:drawOrder>0</gx:drawOrder>            <!-- integer -->
  <coordinates>...</coordinates>            <!-- lon,lat[,alt] -->
</LineString>

说明

定义一组连接在一起的线段。请使用 <LineStyle> 来指定相应线条的颜色、颜色模式和宽度。当某个LineString 向外凸出时,相应的线条会延伸到地面上,形成一个有点像墙或篱笆的多边形。对于凸出的 LineString,线条本身会使用当前的 LineStyle,而凸出部分会使用当前的 PolyStyle。如需查看 LineString(或 paths)示例,请参阅 KML 教程

LineString 的特有元素

<gx:heightOffset>
Google 扩展元素命名空间中的 KML 扩展项,用于修改高度值的呈现方式。此偏移量可让您将整个 LineString 作为一个整体上下移动,而不用修改构成 LineString 的所有单个坐标值(虽然在显示 LineString 时使用的是高度偏移量值,但原来的高度值会保留在 KML 文件中)。其值以米为单位。
<extrude>
布尔值。指定是否将 LineString 连到地面。要使某个 LineString 向外凸出,高度模式必须为 relativeToGroundrelativeToSeaFloor绝对。LineString 中的端点凸出的方向为地球球体中心。
<tessellate>
布尔值。指定是否允许 LineString 沿着地形方向。要启用曲面细分,高度模式必须为 clampToGroundclampToSeaFloor。非常大的 LineString 应启用地形镶嵌,以便沿着地球的曲率铺设(否则它们会进入地下而被隐藏)。
<altitudeMode>
指定如何解释 <Coordinates> 元素中的高度分量。可能的值包括:
  • clampToGround -(默认)表示忽略高度规范(例如在 <coordinates> 标记中)。
  • relativeToGround - 设置相应元素相对于特定位置实际地面高度的高度值。例如,如果某位置的地面高度正好与海平面齐平,且某点的高度被设置为9米,那么在该模式下点地标高度的图标高度是9米。然而,如果是在地面高度高于海平面10米的位置上设置相同的坐标,则该坐标的高度是19米。该模式的典型应用情境是放置电话线杆或滑雪缆索。
  • absolute - 设置相对于海平面的坐标高度,无论该元素下的地形的实际高度如何。例如,如果您使用绝对高度模式将坐标高度设置为 10 米,那么当下面的地形也高于海平面 10 米时,点地标的图标看上去就在地面上。如果地形高于海平面3米,那么该地标看上去就悬空高于该地形7米。该模式的典型应用情境是放置飞机。
<gx:heightMode>
Google 扩展元素命名空间中的 KML 扩展元素,允许存在以海底为基准的高度。具体值包括:
  • relativeToSeaFloor - 将 <altitude> 解释为以海底为基准的高度值(以米为单位)。如果该点位于陆地上方而不是海面上方,则会将 <altitude> 解释为地面以上的高度。
  • clampToSeaFloor - 用于忽略 <altitude> 规范,并将相应的点置于海底。如果该点位于陆地上方而不是海面上方,则会将该点置于地面上。
<gx:drawOrder>
一个整数值,用于指定绘制多个线条字符串的顺序。先绘制的 LineString 可能会被后绘制的 LineString 部分或完全覆盖。当双色线彼此交叉时,可能需要将此元素与 <LineStyle> 中的 <gx:outerColor><gx:outerWidth> 元素结合使用。
<coordinates>(必需)
两个或更多个坐标元组,每个元组均由经度、纬度和高度的浮点值组成。高度分量为可选分量。请在元组间插入空格,但勿在元组内插入空格。

示例

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>LineString.kml</name>
<open>1</open>
<LookAt>
<longitude>-122.36415</longitude>
<latitude>37.824553</latitude>
<altitude>0</altitude>
<range>150</range>
<tilt>50</tilt>
<heading>0</heading>
</LookAt>
<Placemark>
<name>unextruded</name>
<LineString>
<extrude>1</extrude>
<tessellate>1</tessellate>
<coordinates>
-122.364383,37.824664,0 -122.364152,37.824322,0 </coordinates>
</LineString>
</Placemark>
<Placemark>
<name>extruded</name>
<LineString>
<extrude>1</extrude>
<tessellate>1</tessellate>
<altitudeMode>relativeToGround</altitudeMode>
<coordinates>
-122.364167,37.824787,50 -122.363917,37.824423,50 </coordinates>
</LineString>
</Placemark>
</Document>
</kml>

扩展源

包含方

<LineStyle>

语法

<LineStyle id="ID">
  <!-- inherited from ColorStyle -->
  <color>ffffffff</color>            <!-- kml:color -->
  <colorMode>normal</colorMode>      <!-- colorModeEnum: normal or random -->

  <!-- specific to LineStyle -->
  <width>1</width>                            <!-- float -->
  <gx:outerColor>ffffffff</gx:outerColor>     <!-- kml:color -->
  <gx:outerWidth>0.0</gx:outerWidth>          <!-- float -->
  <gx:physicalWidth>0.0</gx:physicalWidth>    <!-- float -->
  <gx:labelVisibility>0</gx:labelVisibility>  <!-- boolean -->
</LineStyle>

说明

指定所有直线几何图形的绘制样式(颜色、颜色模式和线宽)。直线几何图形包含以轮廓显示的多边形的轮廓和地标图标凸出的“绳索”(如果启用了凸出功能)。

LineStyle 的特有元素

<width>
线宽(以像素为单位)。
<gx:outerColor>
<gx:outerWidth> 定义的线条部分的颜色。请注意,如果将 <LineStyle> 应用于 <Polygon> 和 <LinearRing>,系统会忽略 <gx:outerColor> 和 <gx:outerWidth> 元素。
<gx:outerWidth>
介于 0.0 和 1.0 之间的值,用于指定使用 <gx:outerColor> 的线条所占的比例。仅适用于使用 <gx:physicalWidth> 设置宽度的行,不适用于使用 <width> 的行。另请参阅 <LineString> 中的 <gx:drawOrder>。如果双色线彼此交叉(例如,为了显示高速公路交汇点),可能需要绘制顺序值。
<gx:physicalWidth>
线的物理宽度(以米为单位)。
<gx:labelVisibility>
布尔值,用于指定是否在 LineString 中显示文本标签。LineString 的标签包含在 <name> 元素中,该元素与 <LineString> 同级(即包含在同一个 <Placemark> 元素中)。

Google 地球 6.1 及更高版本在默认情况下不显示标签;必须通过将 <gx:labelVisibility> 设置为 1 来为每个 LineString 启用标签。

Google 地球 6.1 已知问题:仅当行长大于标签长度 * 100 米时,不带 <gx:physicalWidth> 元素的 LineString 才会显示该标签。例如,仅当线条超过 700 米时,才会显示包含 7 个字符的标签(例如“example”)。这不会影响值为 <gx:physicalWidth> 的 LineString。

示例

以下示例展示了宽度为4像素、透明度为50%的红线。

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
  <name>LineStyle.kml</name>
  <open>1</open>
  <Style id="linestyleExample">
    <LineStyle>
      <color>7f0000ff</color>
      <width>4</width>
      <gx:labelVisibility>1</gx:labelVisibility>
    </LineStyle>
  </Style>
  <Placemark>
    <name>LineStyle Example</name>
    <styleUrl>#linestyleExample</styleUrl>
    <LineString>
      <extrude>1</extrude>
      <tessellate>1</tessellate>
      <coordinates>
        -122.364383,37.824664,0 -122.364152,37.824322,0
      </coordinates>
    </LineString>
  </Placemark>
</Document>
</kml>

扩展源

包含方

语法

<Link id="ID">
  <!-- specific to Link -->
  <href>...</href>                      <!-- string -->
  <refreshMode>onChange</refreshMode>
    <!-- refreshModeEnum: onChange, onInterval, or onExpire -->
  <refreshInterval>4</refreshInterval>  <!-- float -->
  <viewRefreshMode>never</viewRefreshMode>
    <!-- viewRefreshModeEnum: never, onStop, onRequest, onRegion -->
  <viewRefreshTime>4</viewRefreshTime>  <!-- float -->
  <viewBoundScale>1</viewBoundScale>    <!-- float -->
  <viewFormat>BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth]</viewFormat>
                                        <!-- string -->
  <httpQuery>...</httpQuery>            <!-- string -->
</Link>

说明

<Link> 指定以下任意对象的位置:

  • 网络链接抓取的 KML 文件
  • 在任何叠加层中使用的图片文件(<Icon> 元素指定叠加层中的图片;<Icon> 拥有与 <Link> 相同的字段)
  • 在 <Model> 元素中使用的模型文件

相应文件可以根据此处提供的刷新参数有条件地进行加载和刷新。您可以指定两组不同的刷新参数:一组基于时间(<refreshMode> 和 <refreshInterval>),另一组基于当前的“相机”视图(<viewRefreshMode> 和 <viewRefreshTime>)。此外,Link 还指定是否缩放发送到服务器的边界框参数 (<viewBoundScale>),并提供一组可选参数(<viewBoundScale> 以及可设置为“服务器”的格式)。

抓取文件时,发送到服务器的网址由三段信息组成:

  • 用于指定要加载的文件的 href(超文本引用)。
  • 根据以下参数创建的任意格式字符串:(a) 您在 <viewFormat> 元素中指定的参数或 (b) 边框参数(此为默认设置,如果文件中不包含 <viewFormat> 元素,则会使用该参数)。
  • 在 <httpQuery> 元素中指定的第二个格式字符串。

如果 <href> 中指定的文件是本地文件,则不使用 <viewFormat> 和 <httpQuery> 元素。

<Link> 元素代替了早期 KML 版本中包含的 <NetworkLink> 中的 <Url> 元素,并为 <Region> 元素添加了功能(在KML 2.1中引入)。在 Google 地球3.0及更早的版本中,系统会忽略 <Link> 元素。

<href>
网址(HTTP 地址或本地文件规范)。当 <Link> 的父级元素是一个 NetworkLink 时,<href> 为 KML 文件。当 <Link> 的父级元素是一个 Model 时,<href> 为 COLLADA 文件。当 <Icon> 的父级(与 <Link> 字段相同)是叠加层时,<href> 为图片。您可以在该标记中使用相对网址,系统会根据相应的封闭 KML 文件对这些网址进行评估。如需详细了解如何在 KML 和 KMZ 文件中构建相对引用,请参阅 KMZ 文件
<refreshMode>
指定基于时间的刷新模式,可以是以下某种模式:
  • onChange - 加载文件和 Link 参数发生变化时进行刷新(默认)。
  • onInterval - 每 n 秒(在 <refreshInterval> 中指定)刷新一次。
  • onExpire - 达到到期时间时刷新文件。如果抓取的文件具有 NetworkLinkControl,则 <expires> 时间的优先级高于 HTTP 标头中指定的到期时间。如果未指定 <expires> 时间,则使用 HTTP max-age 标头(如果存在)。如果 max-age 参数不存在,则使用 Expiration HTTP 标头(如果存在)。(如需详细了解 HTTP 标头字段,请参阅超文本传输协议 - HTTP 1.1RFC261b 部分。)
<refreshInterval>
指示每 n 秒刷新一次文件。
<viewRefreshMode>
指定在“相机”发生变化时如何刷新链接。
可以是以下项之一:
  • never(默认)- 忽略视图中的更改。也会忽略 <viewFormat> 参数(如果有的话)。
  • onStop - 在运动停止 n 秒后刷新文件,其中 n 在 <viewRefreshTime> 中指定。
  • onRequest - 只有当用户明确请求刷新文件时才会刷新(例如,用户在 Google 地球中右键点击并选择“上下文”菜单中的“刷新”)。
  • onRegion - 在相应区域变为活动状态时刷新文件。请参阅 <Region>
<viewRefreshTime>
相机移动停止后,指定刷新视图前需等待的秒数。(请参阅上面的 <viewRefreshMode> 和 onStop)。
<viewBoundScale>
先缩放 BBOX 参数,然后再将其发送到服务器。小于1的值可指定使用小于全视图(全屏)的视图。大于1的值指定抓取超出当前视图边缘的区域。
<viewFormat>
指定在抓取相应文件之前附加到该 Link 的 <href> 中的查询字符串的格式。(如果 <href> 指定了本地文件,系统会忽略此元素。)
如果您将 <viewRefreshMode> 指定为 onStop 并且未在文件中包含 <viewFormat> 标记,则以下信息会自动附加到查询字符串的后面

BBOX=[bboxWest]、[bboxSouth]、[bboxEast]、[bboxNorth]

此信息符合网络地图服务 (WMS) 边界框规范。
如果您指定空的 <viewFormat> 标记,则不会向查询字符串附加任何信息。
您也可以指定要添加到查询字符串的一组自定义查看参数。如果您提供了格式字符串,则系统会使用该字符串而非 BBOX 信息。如果您还想要获取 BBOX 信息,则需在添加自定义参数的同时,添加以下参数。
您可以在格式字符串中使用以下任意参数(Google 地球会在创建查询字符串时替换适当的当前值):
  • [lookatLon][lookatLat] - <LookAt> 正在查看的点的经度和纬度
  • [lookatRange][lookatTilt][lookatHeading] - <LookAt> 元素使用的值(请参阅 <LookAt><range><tilt><head> 的说明)
  • [lookatTerrainLon]、[lookatTerrainLat]、[lookatTerrainAlt] - <LookAt> 正在查看的地形上的点(以度/米为单位)
  • [cameraLon]、[cameraLat]、[cameraAlt] - 镜头视点的度数/米数
  • [horizFov][vertFov] - 镜头的水平和垂直视野
  • [horizPixels][vertPixels] - 3D查看器的大小(以像素为单位)
  • [terrainEnabled] - 表示3D查看器是否显示地形
<httpQuery>
根据指定的参数,将信息附加到查询字符串。(Google 地球会在创建查询字符串时改为使用适当的当前值)。支持以下参数:
  • [clientVersion]
  • [KML 版本]
  • [clientName]敬上
  • [语言]

示例

<NetworkLink>
  <name>NE US Radar</name>
  <flyToView>1</flyToView>
  <Link>
    <href>http://www.example.com/geotiff/NE/MergedReflectivityQComposite.kml</href>
    <refreshMode>onInterval</refreshMode>
    <refreshInterval>30</refreshInterval>
    <viewRefreshMode>onStop</viewRefreshMode>
    <viewRefreshTime>7</viewRefreshTime>
    <viewFormat>BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth];CAMERA=\
      [lookatLon],[lookatLat],[lookatRange],[lookatTilt],[lookatHeading];VIEW=\
      [horizFov],[vertFov],[horizPixels],[vertPixels],[terrainEnabled]</viewFormat>
  </Link>
</NetworkLink> 

扩展源

包含方

另请参见

<ListStyle>

语法

<ListStyle id="ID">
  <!-- specific to ListStyle -->
  <listItemType>check</listItemType> <!-- kml:listItemTypeEnum:check,
                                          checkOffOnly,checkHideChildren,
                                         radioFolder -->
  <bgColor>ffffffff</bgColor>        <!-- kml:color -->
  <ItemIcon>                         <!-- 0 or more ItemIcon elements -->
    <state>open</state>
      <!-- kml:itemIconModeEnum:open, closed, error, fetching0, fetching1, or fetching2 -->
    <href>...</href>                 <!-- anyURI -->
  </ItemIcon>
</ListStyle>

说明

指定如何在列表视图中显示某个地图项。列表视图是容器和子元素的层次结构(在 Google 地球中为“位置”面板)。

ListStyle 的特有元素

<listItemType>
指定如何在列表视图中显示某个地图项。可能的值包括:
  • check(默认)- 地图项的可见性与相应项的复选框绑定。
  • radioFolder - 为 Container 指定此值时,一次只能显示其中一个 Container 项。
  • checkOffOnly - 为 Container 或 Network Link 指定此值时,可以阻止同时显示所有项(也就是说,用户可以在 Container 或 Network Link 中同时关闭所有项,但不能同时打开所有项)。此设置适用于包含大量数据的容器或网络链接。
  • checkHideChildren - 使用常规的可见性复选框,但不会在列表视图中显示 Container 或 Network Link 的子元素。复选框允许用户切换子对象在查看器中的可见性。
<bgColor>
代码段的背景颜色。颜色值和透明度值以十六进制表示法表示。任何一种颜色的值的范围都是 0 到 255(00ff)。对于 Alpha 值,00 是完全透明的,ff 是完全不透明的。表达式的顺序是 aabbggrr,其中 aa=alpha(00 到 ff);bb=blue(00 到 ff);gg=green(00 到 ff);rr=red(00 到 ff)。例如,如果要对叠加层应用透明度为 50% 的蓝色,您需要指定以下内容:<color>7fff0000</color>,其中 alpha=0x7f、blue=0xff、green=0x00 和 red=0x00。
<ItemIcon>
“列表”视图中所用的图标反映了文件夹或链接的抓取状态。与开放关闭模式相关联的图标用于文件夹和网络链接。与 errorfetching0fetching1fetching2 模式相关联的图标用于网络链接。以下屏幕截图显示了这些状态对应的 Google 地球图标
<州>
指定 NetworkLink 或 Folder 的当前状态。可能的值包括 openclosederrorfetching0fetching1fetching2。您可以通过在两个值之间插入空格(无英文逗号)来组合使用这些值。
<href>
指定该地图项的列表视图中所用图片的 URI。

示例

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>ListStyle.kml</name>
<open>1</open>
<Style id="bgColorExample">
<ListStyle>
<bgColor>ff336699</bgColor>
</ListStyle>
</Style>
<Style id="checkHideChildrenExample">
<ListStyle>
<listItemType>checkHideChildren</listItemType>
</ListStyle>
</Style>
<Style id="radioFolderExample">
<ListStyle>
<listItemType>radioFolder</listItemType>
</ListStyle>
</Style>
<Folder>
<name>ListStyle Examples</name>
<open>1</open>
<Folder>
<name>bgColor example</name>
<open>1</open>
<Placemark>
<name>pl1</name>
<Point>
<coordinates>-122.362815,37.822931,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>pl2</name>
<Point>
<coordinates>-122.362825,37.822931,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>pl3</name>
<Point>
<coordinates>-122.362835,37.822931,0</coordinates>
</Point>
</Placemark>
<styleUrl>#bgColorExample</styleUrl>
</Folder>
<Folder>
<name>checkHideChildren example</name>
<open>1</open>
<Placemark>
<name>pl4</name>
<Point>
<coordinates>-122.362845,37.822941,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>pl5</name>
<Point>
<coordinates>-122.362855,37.822941,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>pl6</name>
<Point>
<coordinates>-122.362865,37.822941,0</coordinates>
</Point>
</Placemark>
<styleUrl>#checkHideChildrenExample</styleUrl>
</Folder>
<Folder>
<name>radioFolder example</name>
<open>1</open>
<Placemark>
<name>pl7</name>
<Point>
<coordinates>-122.362875,37.822951,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>pl8</name>
<Point>
<coordinates>-122.362885,37.822951,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>pl9</name>
<Point>
<coordinates>-122.362895,37.822951,0</coordinates>
</Point>
</Placemark>
<styleUrl>#radioFolderExample</styleUrl>
</Folder>
</Folder>
</Document>
</kml>

扩展源

包含方

<LookAt>

语法

<LookAt id="ID">
  <!-- inherited from AbstractView element -->
  <TimePrimitive>...</TimePrimitive>  <!-- gx:TimeSpan or gx:TimeStamp -->
    <gx:ViewerOptions>
    <option> name=" " type="boolean">     <!-- name="streetview", "historicalimagery", "sunlight", or "groundnavigation" -->
    </option>
  </gx:ViewerOptions>

  <!-- specific to LookAt -->
  <longitude>0</longitude>            <!-- kml:angle180 -->
  <latitude>0</latitude>              <!-- kml:angle90 -->
  <altitude>0</altitude>              <!-- double -->
  <heading>0</heading>                <!-- kml:angle360 -->
  <tilt>0</tilt>                      <!-- kml:anglepos90 -->
  <range></range>                     <!-- double -->
  <altitudeMode>clampToGround</altitudeMode>
          <!--kml:altitudeModeEnum:clampToGround, relativeToGround, absolute -->
          <!-- or, gx:altitudeMode can be substituted: clampToSeaFloor, relativeToSeaFloor -->

</LookAt>

说明

定义与任何派生自地图项的元素相关联的虚拟镜头。LookAt 元素会针对目前正在查看的对象定位“镜头”。在 Google 地球中,当用户双击“位置”面板中的项或3D查看器中的图标时,视图将“飞到”相应的 LookAt 视点。

LookAt 的特有元素

<longitude>
相机所查看的点的经度。相对于本初子午线的角度距离(以度为单位)。子午线以西的值的范围是-180度到0度。子午线以东的值的范围是0度到180度。
<latitude>
相机所查看的点的纬度。赤道(0度))以北或以南的度数。值的范围是-90度到90度。
<altitude>
与地表的距离(以米为单位)。根据 LookAt 的高度模式进行解释。
<heading>
方向(即北、南、东、西),以度为单位。默认值 = 0(北)(参见下图)。值的范围是0度到360度。
<tilt>
LookAt 方向与地表的法线之间的角度。(参见下图)。值的范围是0度到90度。<tilt> 的值不能为负。<tilt> 值为0度表示从正上方查看。<tilt> 值为90度表示沿地平线方向查看。
<range>(必需)
从 <经度>、<纬度> 和 <高度> 指定的点到 LookAt 位置的距离(以米为单位)。(参见下图)。
<altitudeMode>
指定如何解释为 LookAt 点指定的 <height>。可能的值如下所示:
  • clampToGround - (默认)表示忽略 <altitude> 规范,并将 LookAt 置于地面上。
  • relativeToGround - 将 <altitude> 解释为地面以上的高度值(以米为单位)。
  • absolute - 将 <altitude> 解释为海平面以上的高度值(以米为单位)。
<gx:altitudeMode>
Google 扩展元素命名空间中的 KML 扩展元素,允许存在以海底为基准的高度。具体值包括:
  • relativeToSeaFloor - 将 <altitude> 解释为以海底为基准的高度值(以米为单位)。如果该点位于陆地上方而不是海面上方,则会将 <altitude> 解释为地面以上的高度。
  • clampToSeaFloor - 用于忽略 <altitude> 规范,并将 LookAt 置于海底。如果该点位于陆地上方而不是海面上方,则会将 LookAt 置于地面上。

下图显示了 <range>、<tilt> 和 <height> 元素:

 

下图显示了 <headline> 元素:

 

East=90, South=180, West=270
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"
xmlns:gx="http://www.google.com/kml/ext/2.2">

  <Placemark>
    <name>LookAt.kml</name>
    <LookAt>
      <gx:TimeStamp>
        <when>1994</when>
      </gx:TimeStamp>
      <longitude>-122.363</longitude>
      <latitude>37.81</latitude>
      <altitude>2000</altitude>
      <range>500</range>
      <tilt>45</tilt>
      <heading>0</heading>
      <altitudeMode>relativeToGround</altitudeMode>
    </LookAt>
    <Point>
      <coordinates>-122.363,37.82,0</coordinates>
    </Point>
  </Placemark>
</kml>

扩展

包含方

<Model>

语法

<Model id="ID">
  <!-- specific to Model -->
  <altitudeMode>clampToGround</altitudeMode>
      <!-- kml:altitudeModeEnum: clampToGround,relativeToGround,or absolute -->
      <!-- or, substitute gx:altitudeMode: clampToSeaFloor, relativeToSeaFloor -->
  <Location>
    <longitude></longitude> <!-- kml:angle180 -->
    <latitude></latitude>   <!-- kml:angle90 -->
    <altitude>0</altitude>  <!-- double -->
  </Location>
  <Orientation>
    <heading>0</heading>    <!-- kml:angle360 -->
    <tilt>0</tilt>          <!-- kml:anglepos180 -->
    <roll>0</roll>          <!-- kml:angle180 -->
  </Orientation>
  <Scale>
    <x>1</x>                <!-- double -->
    <y>1</y>                <!-- double -->
    <z>1</z>                <!-- double -->
  </Scale>
  <Link>...</Link>
  <ResourceMap>
    <Alias>
      <targetHref>...</targetHref>   <!-- anyURI -->
      <sourceHref>...</sourceHref>   <!-- anyURI -->
    </Alias>
  </ResourceMap>
</Model>

说明

COLLADA 文件中描述的3D对象(在 <Link> 标记中引用)。COLLADA 文件的扩展名为 .dae。模型是在其本身的坐标空间内创建的,然后在 Google 地球中进行查找、定位和缩放。如需了解详情,请参阅“KML 主题”页中关于模型的部分。

Google 地球支持 COLLADA 通用配置文件,但以下情况除外:

  • Google 地球仅支持三角形和线条作为原始类型。允许的三角形数量上限为21845个。
  • Google 地球不支持动画或皮肤。
  • Google 地球不支持外部几何图形引用。

Model 的特有元素

<altitudeMode>
指定如何解释 <Location> 中指定的 <height>。可能的值如下所示:
  • clampToGround - (默认)表示忽略 <altitude> 规范,并将模型置于地面上。
  • relativeToGround - 将 <altitude> 解释为地面以上的高度值(以米为单位)。
  • absolute - 将 <altitude> 解释为海平面以上的高度值(以米为单位)。
<gx:heightMode>
Google 扩展元素命名空间中的 KML 扩展元素,允许存在以海底为基准的高度。具体值包括:
  • relativeToSeaFloor - 将 <altitude> 解释为以海底为基准的高度值(以米为单位)。如果相应的点位于陆地上方而不是海面上方,则会将 <altitude> 解释为地面以上的高度。
  • clampToSeaFloor - 用于忽略 <height> 规范,并将模型放置在海底。如果该点位于陆地上方而不是海面上方,则该模型会定位在地面上。
<地点>
指定模型起点的纬度、经度和海拔的确切坐标。纬度经度测量值是采用 WGS84 基准面的纬度和经度标准投影。“海拔”是指位于地表上方的距离(以米为单位),并根据 <heightMode> 或 <gx:heightMode> 进行解释。
<Location>
  <longitude>39.55375305703105</longitude>
  <latitude>-118.9813220168456</latitude>
  <altitude>1223</altitude>
</Location> 
<Orientation>
说明旋转 3D 模型的坐标系以在 Google 地球中定位对象。请参见下图。
<Orientation>
  <heading>45.0</heading>
  <tilt>10.0</tilt>
  <roll>0.0</roll>
</Orientation> 

旋转按以下顺序应用于模型:

  1. <roll>
  2. <tilt>
  3. <heading>
<heading>
围绕 z 轴旋转的角度(与地球表面呈垂直方向)。值为 0(默认值)等于北。正旋转是围绕 z 轴顺时针旋转的,并以 0 到 360 之间的度数表示。
<tilt>
围绕 x 轴旋转。正旋转沿 x 轴顺时针旋转,以 0 到 180 之间的度数表示。
<roll>
围绕 y 轴旋转。正旋转沿 y 轴顺时针旋转,以 0 到 180 之间的度数表示。
当朝着原点向下俯视坐标轴时,方位、倾斜和旋转值均按照顺时针方向指定
下图显示了模型轴的典型方向
对于一个典型的模型,+x 表示向右移动,+y 表示向前移动,朝向为北,+z 表示向上移动
<缩放>
沿着模型的坐标空间中的 x 轴、y 轴和 z 轴缩放模型。
<Scale>
<x>2.5</x>
<y>2.5</y>
<z>3.5</z>
</Scale>
指定要加载的文件以及可选的刷新参数。请参阅 <Link>
<ResourceMap>
指定 0 个或多个 <Alias> 元素,每个元素都是纹理文件路径(从原始 Collada 文件到包含该模型的 KML 或 KMZ 文件)的映射。此元素可让您移动和重命名纹理文件,而无需更新引用这些纹理的原始 Collada 文件。一个 <ResourceMap> 元素可包含从不同(源)Colllada 文件到同一(目标)KMZ 文件的多个映射。
<Alias>
<targetHref>../images/foo.jpg</targetHref> <sourceHref>c:\mytextures\foo.jpg</sourceHref> </Alias>
<Alias> 包含从 <sourceHref> 到 <targetHref> 的映射
<targetHref>
指定 Google 地球要提取的纹理文件。此引用可以是 .kmz 归档中图片文件的相对引用,也可以是文件的绝对引用(例如网址)。
<来源 Href>
是为 Collada.dae 文件中的纹理文件指定的路径。
在 Google 地球中,如果没有提供此映射,则将根据以下规则查找 Collada (.dae) 文件中引用的纹理
  • 无路径:如果纹理名称不包含路径,Google 地球会在引用此纹理的 .dae 文件所在的目录中查找该纹理。
  • 相对路径:如果纹理名称包含相对路径(例如 ../images/mytexture.jpg),Google 地球会将其解读为相对于引用该路径的 .dae 文件。
  • 绝对路径:如果纹理名称是绝对路径 (c:\mytexture.jpg) 或网络路径(例如 http://myserver.com/mytexture.jpg),那么无论 .dae 文件位于何处,Google 地球都会在指定位置查找该文件。

示例

<Model id="khModel543"> 
<altitudeMode>relativeToGround</altitudeMode>
<Location>
<longitude>39.55375305703105</longitude>
<latitude>-118.9813220168456</latitude>
<altitude>1223</altitude>
</Location>
<Orientation>
<heading>45.0</heading>
<tilt>10.0</tilt>
<roll>0.0</roll>
</Orientation>
<Scale>
<x>1.0</x>
<y>1.0</y>
<z>1.0</z>
</Scale>
<Link>
<href>house.dae</href>
<refreshMode>once</refreshMode>
</Link>
<ResourceMap>
<Alias>
<targetHref>../files/CU-Macky---Center-StairsnoCulling.jpg</targetHref>
<sourceHref>CU-Macky---Center-StairsnoCulling.jpg</sourceHref>
</Alias>
<Alias>
<targetHref>../files/CU-Macky-4sideturretnoCulling.jpg</targetHref>
<sourceHref>CU-Macky-4sideturretnoCulling.jpg</sourceHref>
</Alias>
<Alias>
<targetHref>../files/CU-Macky-Back-NorthnoCulling.jpg</targetHref>
<sourceHref>CU-Macky-Back-NorthnoCulling.jpg</sourceHref>
</Alias>
</ResourceMap>
</Model>

扩展源

包含方

<MultiGeometry>

语法

<MultiGeometry id="ID">
  <!-- specific to MultiGeometry -->
  <!-- 0 or more Geometry elements -->
</MultiGeometry>

说明

与同一地图项关联的0个或多个基本几何图形的容器。

请注意:<GeometryCollection> 标记已被弃用,请改为使用 <MultiGeometry>。

MultiGeometry 的特有元素

示例

<Placemark>
  <name>SF Marina Harbor Master</name>
<visibility>0</visibility>
<MultiGeometry> <LineString>
<!-- north wall --> <coordinates>
-122.4425587930444,37.80666418607323,0
-122.4428379594768,37.80663578323093,0 </coordinates>
</LineString> <LineString>
<!-- south wall -->
<coordinates>
-122.4425509770566,37.80662588061205,0
-122.4428340530617,37.8065999493009,0
</coordinates> </LineString>
</MultiGeometry> </Placemark>

扩展源

包含方

<gx:MultiTrack>

该元素是OGC KML 2.2标准的扩展元素,并且受 Google 地球5.2及更高版本的支持。了解详情

语法

<gx:MultiTrack id="ID">
  <!-- specific to MultiTrack -->
  <altitudeMode>clampToGround</altitudeMode>
        <!-- kml:altitudeModeEnum: clampToGround, relativeToGround, or absolute -->
        <!-- or, substitute gx:altitudeMode: clampToSeaFloor, relativeToSeaFloor -->
  <gx:interpolate>0<gx:interpolate>   <!-- boolean -->
  <gx:Track>...</gx:Track>            <!-- one or more gx:Track elements -->
</gx:MultiTrack>

说明

多路线元素,用于将多个路线元素集合成单个概念性整体。例如,假设您收集一天中自行车旅程的 GPS 数据,其中包括多次停下来休息和一次停下来吃午饭。由于出现时间中断,在绘制时间和位置路线图时,一次自行车旅程可能会有四条不同的路线。将这些 <gx:Track> 元素集合到一个 <gx:MultiTrack> 容器,可使这些元素在 Google 地球中显示为单个路径的各个部分。图标在到达一个路段的终点后,会移到另一个路段的起点。<gx:interpolate> 元素会指定是在一条路线的终点停止并立即跳至下一路线的起点,还是在两条路线之间插入缺失的值。

gx:MultiTrack 的特有元素

<altitudeMode>
指定如何解释 <Coordinates> 元素中的高度分量。可能的值包括:
  • clampToGround -(默认)表示忽略高度规范(例如在 <gx:coord> 元素中)。
  • relativeToGround - 设置相应元素相对于特定位置实际地面高度的高度值。例如,如果某位置的地面高度正好与海平面齐平,且某点的高度被设置为9米,那么在该模式下点地标高度的图标高度是9米。然而,如果是在地面高度高于海平面10米的位置上设置相同的坐标,则该坐标的高度是19米。
  • absolute - 设置相对于海平面的坐标高度,无论该元素下的地形的实际高度如何。例如,如果您使用绝对高度模式将坐标高度设置为 10 米,那么当下面的地形也高于海平面 10 米时,点地标的图标看上去就在地面上。如果地形高于海平面3米,那么该地标看上去就悬空高于该地形7米。
<gx:heightMode>
Google 扩展元素命名空间中的 KML 扩展元素,允许存在以海底为基准的高度。具体值包括:
  • relativeToSeaFloor - 将高度解释为以海底为基准的值(以米为单位)。如果该点位于陆地上方而不是海面上方,则会将海拔高度解读为地面以上的高度。
  • clampToSeaFloor - 用于忽略高度规范,并将点置于海底。如果该点位于陆地上方而不是海面上方,则会将该点置于地面上。
<gx:interpolate>
布尔值。如果多轨道包含多个 <gx:Track> 元素,请指定是否在第一个音轨的结尾与下一首曲目的开头之间插入缺失的值。使用默认值 (0) 时,图标或模型会在一首曲目结束时停止播放,然后跳转到下一首曲目的开头。

包含

语法

<NetworkLink id="ID">
  <!-- inherited from Feature element --><name>...</name>                      <!-- string -->
  <visibility>1</visibility>            <!-- boolean -->
  <open>0</open>                        <!-- boolean -->
  <atom:author>...<atom:author>         <!-- xmlns:atom -->
   <atom:link href=" "/>               <!-- xmlns:atom -->
  <address>...</address>                <!-- string -->
  <xal:AddressDetails>...</xal:AddressDetails>  <!-- xmlns:xal -->
<phoneNumber>...</phoneNumber> <!-- string -->
<Snippet maxLines="2">...</Snippet> <!-- string --> <description>...</description> <!-- string --> <AbstractView>...</AbstractView> <!-- Camera or LookAt --> <TimePrimitive>...</TimePrimitive> <styleUrl>...</styleUrl> <!-- anyURI --> <StyleSelector>...</StyleSelector> <Region>...</Region> <Metadata>...</Metadata> <!-- deprecated in KML 2.2 --> <ExtendedData>...</ExtendedData> <!-- new in KML 2.2 --> <!-- specific to NetworkLink --> <refreshVisibility>0</refreshVisibility> <!-- boolean --> <flyToView>0</flyToView> <!-- boolean --> <Link>...</Link> </NetworkLink>

说明

引用本地或远程网络上的 KML 文件或 KMZ 归档。请使用 <Link> 元素指定相应 KML 文件的位置。在该元素中,您可以根据时间和镜头变化来定义用于更新文件的刷新选项。NetworkLink 可与 Region 结合使用,从而高效处理大型数据集。

<refreshVisibility>
布尔值。0值可让 Google 地球用户控制地图项的可见性。将该值设置为1,可在每次刷新 NetworkLink 时重置地图项的可见性。例如,假定链接的 KML 文件中的某个地标的 <visibility> 设置为1,并且该 NetworkLink 将 <refreshVisibility> 也设为1,那么在文件第一次加载到 Google 地球中时,用户可以清空该项旁的复选框,以使其不再显示在3D查看器中。但是,当 NetworkLink 进行刷新时,系统会再次显示地标,因为其原始可见性状态值为 TRUE。
<flyToView>
布尔值。值为1会导致 Google 地球飞到 NetworkLinkControl 中的 LookAt 或 Camera 的视图(如果有)。如果 NetworkLinkControl 不包含 AbstractView 元素,Google 地球会飞到刷新后文件中 <kml> 元素内 Feature 子元素中的 LookAt 或 Camera 元素。如果 <kml> 元素未指定 LookAt 或 Camera,则该视图不会更改。例如,Google 地球会飞到父 Document 的 <LookAt> 视图,而不是到 Document 内所含地标的 <LookAt>。

提示:要在列表视图中显示 Network Link 内的顶级文件夹或文档,请为文件夹或文档分配一个 ID。如果没有此 ID,列表视图中只会显示子对象名称。

示例

<Document>
  <visibility>1</visibility>
  <NetworkLink>
    <name>NE US Radar</name>
    <refreshVisibility>1</refreshVisibility>
    <flyToView>1</flyToView>
    <Link>...</Link></NetworkLink>
</Document>

扩展源

包含方

<NetworkLinkControl>

语法

<NetworkLinkControl>
  <minRefreshPeriod>0</minRefreshPeriod>           <!-- float -->
  <maxSessionLength>-1</maxSessionLength>          <!-- float --> 
  <cookie>...</cookie>                             <!-- string -->
  <message>...</message>                           <!-- string -->
  <linkName>...</linkName>                         <!-- string -->
  <linkDescription>...</linkDescription>           <!-- string -->
  <linkSnippet maxLines="2">...</linkSnippet>      <!-- string -->
  <expires>...</expires>                           <!-- kml:dateTime -->
  <Update>...</Update>                             <!-- Change,Create,Delete -->
  <AbstractView>...</AbstractView>                 <!-- LookAt or Camera -->
</NetworkLinkControl>

说明

控制 <NetworkLink> 所抓取的文件的行为。

NetworkLinkControl 的特有元素

<minRefreshPeriod>
<minRefreshPeriod> 是文件提取所允许的最短时间(以秒为单位)。该参数允许服务器限制对特定文件的抓取,并将刷新率调整为预期的数据更改频率。例如,某个用户可能会将链接刷新间隔设置为5秒钟,但您可以将自己的最短刷新间隔时间设置为3600,这样您就可以将刷新更新限制为每小时一次。
<maxSessionLength>
<maxSessionLength> 是客户端 NetworkLink 可以保持连接状态的最长时间,以秒为单位。默认值 -1 表示不明确终止会话。
下次刷新网络链接时,可使用此 元素向网址查询附加字符串。您可以在自己的脚本中用此数据提供更加智能的服务器端处理,包括版本查询和条件文件传输。
<message>
您可以发送弹出式消息,例如广告联盟链接的使用准则。当网络链接第一次加载到 Google 地球中或在网络链接控件中进行更改时,系统会显示相应的消息。
<linkName>
您可以从服务器控制网络链接的名称,这样在客户端对其名称所做的更改就会被服务器覆盖。
<linkDescription>
您可以从服务器控制网络链接的说明,这样在客户端对说明所作的更改就会被服务器覆盖。
<linkSnippet maxLines="2" >
您可以从服务器控制网络链接的代码段,这样在客户端对代码段所做的更改会被服务器覆盖。<linkSnippet> 具有一个 maxLines 属性(一个用于指定所显示内容的行数上限的整数)。
<expires>
您可以指定刷新链接的日期/时间。只有在 <Link> 中的 <refreshMode> 值为 onExpire 时,此规范才会生效。请参阅 <refreshMode>
<Update>
通过 <Update>,您可以为之前通过网络链接加载的 .KML 文件或 .kmz 归档文件指定任意数量的更改、创建和删除标记。请参阅 <Update>
<AbstractView>

示例

<kml xmlns="http://www.opengis.net/kml/2.2">
<NetworkLinkControl>
   <message>This is a pop-up message. You will only see this once</message>
   <cookie>cookie=sometext</cookie>
   <linkName>New KML features</linkName>
   <linkDescription><![CDATA[KML now has new features available!]]></linkDescription>
</NetworkLinkControl>
</kml>

扩展源

  • 此元素为 <kml> 元素的直接子元素。

包含方

  • <kml>

另请参见

<Objec>t

语法

<!-- abstract element; do not create -->
<!-- Object id="ID" targetId="NCName" -->
<!-- /Object> -->

说明

这是一个抽象,不能直接在 KML 文件中使用。它提供 id 属性(允许对 KML 元素进行唯一标识)和 targetId 属性(用于引用已加载到 Google 地球中的对象)。如果要使用 <Update> 机制,则必须指定 id 属性。

<Overlay>

语法

<!-- abstract element; do not create -->
<!-- Overlay id="ID" -->                    <!-- GroundOverlay,ScreenOverlay -->
  <!-- inherited from Feature element -->
  <name>...</name>                      <!-- string -->
  <visibility>1</visibility>            <!-- boolean -->
  <open>0</open>                        <!-- boolean -->
  <atom:author>...<atom:author>         <!-- xmlns:atom -->
  <atom:link href=" "/>            <!-- xmlns:atom -->
  <address>...</address>                <!-- string -->
  <xal:AddressDetails>...</xal:AddressDetails>  <!-- xmlns:xal -->
<phoneNumber>...</phoneNumber> <!-- string -->
<Snippet maxLines="2">...</Snippet> <!-- string --> <description>...</description> <!-- string --> <AbstractView>...</AbstractView> <!-- Camera or LookAt --> <TimePrimitive>...</TimePrimitive> <styleUrl>...</styleUrl> <!-- anyURI --> <StyleSelector>...</StyleSelector> <Region>...</Region> <Metadata>...</Metadata> <!-- deprecated in KML 2.2 --> <ExtendedData>...</ExtendedData> <!-- new in KML 2.2 --> <!-- specific to Overlay --> <color>ffffffff</color> <!-- kml:color --> <drawOrder>0</drawOrder> <!-- int --> <Icon> <href>...</href> </Icon> <!-- /Overlay -->

说明

这是一个抽象元素,不能直接在 KML 文件中使用。<Overlay> 是地表或屏幕上所绘制的图像叠加层的基础类型。<Icon> 会指定要使用的图片,用户可对其进行配置,以根据计时器或镜头变化重新加载图片。该元素还包含多个叠加层的叠放顺序规范,以及向基础图片添加颜色和透明度值的规范。

Overlay 的特有元素

<color>
颜色值采用十六进制表示法,包括不透明度(Alpha 版)值。表达式的顺序为 alpha、blue、green、red (aabbggrr)。任何一种颜色的值的范围都是 0 到 255(00ff). 表示不透明度,00 表示完全透明,ff 表示完全不透明)。例如,如果要对叠加层应用透明度为 50% 的蓝色,您需要指定以下内容:<color>7fff0000</color>

请注意:<geomColor> 元素已被弃用,请改用 <color>。

<drawOrder>
此元素可定义重叠叠加层中的图片的堆叠顺序。<drawOrder> 值较高的叠加层绘制在 <drawOrder> 值较低的叠加层之上。
<Icon>
定义与叠加层关联的图像。<href> 元素会定义将用作叠加层的图片的位置。该位置可以位于本地文件系统中,也可以位于远程网络服务器中。如果省略此元素或该元素不包含 <href>,系统会使用地面或屏幕叠加层定义的颜色和尺寸绘制一个矩形。
<Icon>
   <href>icon.jpg</href>
</Icon>

扩展

扩展元素

<PhotoOverlay>

语法

<PhotoOverlay>
  <!-- inherited from Feature element -->
  <name>...</name>                      <!-- string -->
  <visibility>1</visibility>            <!-- boolean -->
  <open>0</open>                        <!-- boolean -->
  <atom:author>...<atom:author>         <!-- xmlns:atom -->
  <atom:link href=" "/>            <!-- xmlns:atom -->
  <address>...</address>                <!-- string -->
  <xal:AddressDetails>...</xal:AddressDetails>  <!-- xmlns:xal -->
<phoneNumber>...</phoneNumber> <!-- string -->
<Snippet maxLines="2">...</Snippet> <!-- string --> <description>...</description> <!-- string --> <AbstractView>...</AbstractView> <!-- Camera or LookAt --> <TimePrimitive>...</TimePrimitive> <styleUrl>...</styleUrl> <!-- anyURI --> <StyleSelector>...</StyleSelector> <Region>...</Region> <Metadata>...</Metadata> <!-- deprecated in KML 2.2 --> <ExtendedData>...</ExtendedData> <!-- new in KML 2.2 --> <!-- inherited from Overlay element --> <color>ffffffff</color> <!-- kml:color --> <drawOrder>0</drawOrder> <!-- int --> <Icon> <href>...</href> <!-- anyURI --> ... </Icon> <!-- specific to PhotoOverlay --> <rotation>0</rotation> <!-- kml:angle180 --> <ViewVolume> <leftFov>0</leftFov> <!-- kml:angle180 --> <rightFov>0</rightFov> <!-- kml:angle180 --> <bottomFov>0</bottomFov> <!-- kml:angle90 --> <topFov>0</topFov> <!-- kml:angle90 --> <near>0</near> <!-- double --> </ViewVolume> <ImagePyramid> <tileSize>256</tileSize> <!-- int --> <maxWidth>...</maxWidth> <!-- int --> <maxHeight>...</maxHeight> <!-- int --> <gridOrigin>lowerLeft</gridOrigin> <!-- lowerLeft or upperLeft --> </ImagePyramid> <Point> <coordinates>...</coordinates> <!-- lon,lat[,alt] --> </Point> <shape>rectangle</shape> <!-- kml:shape --> </PhotoOverlay>

说明

通过 <PhotoOverlay> 元素,您可以通过地理方式指定照片在地球上的位置,并指定该 PhotoOverlay 的查看参数。PhotoOverlay 可以是简单的2D矩形、部分或完整的圆柱面,也可以是球面(用于球面全景图)。系统会将该叠加层放置到指定位置,并使其朝向视点。

由于 <PhotoOverlay> 派生自 <Feature>,因此它可以包含派生自 <AbstractView> 的两个元素之一:<Camera> 或 <LookAt>。Camera(或 LookAt)指定了视点和查看方向(也称为“查看矢量”)。PhotoOverlay 是相对于视点来进行定位的。具体而言,就是2D矩形图片的平面和查看矢量是正交的(成直角)。该平面的法线方向(即远离照片的正向)朝向视点。

PhotoOverlay 图片的网址在 <Icon> 标记中指定,该标记继承自 <Overlay>。<Icon> 标记必须包含一个 <href> 元素,用于指定用于 PhotoOverlay 的图片文件。在图片很大的情况下,<href> 是一个被编入具有不同分辨率的图片金字塔索引中的特殊网址(参见 ImagePyramid)。

有关详情,请参见“KML 主题”页中关于 PhotoOverlay 的部分。

PhotoOverlay 的特有元素

<rotation>
调整照片在视野内的放置方式。如果您的照片在旋转后略微偏离所需的水平视图,该元素将会非常有用。
<ViewVolume>
定义当前场景的可见程度。指定视野类似于在实体相机中指定镜头开度。较小的视野(类似于长焦镜头)聚焦于场景中较小的部分。较大的视野(类似于广角镜头)聚焦于场景中较大的部分。
<leftFov>
镜头查看方向与查看范围左侧之间的角度(以度为单位)。
<rightFov>
相机查看方向与查看范围右侧之间的角度(以度为单位)。
<bottomFov>
镜头查看方向与查看范围底部之间的夹角(以度为单位)。
<topFov>
相机查看方向与查看范围顶部之间的角度(以度为单位)。
<near>
从摄像头视角到 PhotoOverlay 形状的查看方向(以米为单位)进行测量。
PhotoOverlay 的视野由四个平面定义,其中每个平面都用相对于矢量的角度指定。这四个平面定义了视野的顶部、底部、左侧和右侧,其形状为被截断的金字塔,如下所示
下图显示了此金字塔中的四个视野范围:
<ImagePyramid>
对于非常大的图片,您需要构建图片金字塔,这是一组分层图片,其中每张图片的分辨率越来越低。金字塔中的每张图片都细分成多个图块,因此只需加载视图中的部分。Google 地球会计算当前视点,并加载适合用户距图片距离的图片分割。随着视点移近 PhotoOverlay,Google 地球会加载分辨率更高的图片分割。由于无法同时在屏幕上观看原始图片中所有像素,这种处理过程就可让 Google 地球实现最佳性能,因为它只加载视图中的那部分图片以及用户在当前视点所能看到的像素细节。
在指定图片金字塔时,您还可以修改 <Icon> 元素中的 <href> 以包含有关要加载哪些图块的规范。
<tileSize>
图块的大小(以像素为单位)。图块必须为方形,而 <tileSize> 必须是 2 的幂。卡片尺寸建议为 256(默认值)或 512。原始图片会以不同的分辨率分为多个该大小的图片分割。
<maxWidth>
原始图片的宽度(以像素为单位)。
<maxHeight>
原始图片的高度(以像素为单位)。
<gridOrigin>
指定从金字塔每一层的图块开始编号的位置。值 lowerLeft 表示每层的第 1 行、第 1 列位于网格的左下角。
<点>
<Point> 元素充当 <Placemark> 元素中的 <Point>。它可以绘制图标来标记 PhotoOverlay 的位置。绘制的图标由 <styleUrl> 和 <StyleSelector> 字段指定,就像它用于 <Placemark> 一样。
<shape>
将 PhotoOverlay 投影到 <shape> 上。<shape> 可以是以下项之一:

rectangle(默认)- 用于普通照片

cylinder - 用于全景(可以是部分或完整的圆柱面)

sphere - 用于球形全景

示例

<PhotoOverlay>
  <!-- Feature elements -->
  <name>A simple non-pyramidal photo</name>
  <description>High above the ocean</description>
  <!-- Overlay elements -->
  <Icon>
  <!-- A simple normal jpeg image -->
  <href>small-photo.jpg</href>
  </Icon>
  <!-- PhotoOverlay elements -->
  <!-- default: <rotation> default is 0 -->
  <ViewVolume>
    <near>1000</near>
    <leftFov>-60</leftFov>
    <rightFov>60</rightFov>
    <bottomFov>-45</bottomFov>
    <topFov>45</topFov>
  </ViewVolume>
  <!-- if no ImagePyramid only level 0 is shown,
       fine for a non-pyramidal image -->
  <Point>
    <coordinates>1,1</coordinates>
  </Point>
  <!-- default: <shape> -->
</PhotoOverlay>

扩展源

包含方

<Placemark>

语法

<Placemark id="ID">
  <!-- inherited from Feature element -->
  <name>...</name>                      <!-- string -->
  <visibility>1</visibility>            <!-- boolean -->
  <open>0</open>                        <!-- boolean -->
  <atom:author>...<atom:author>         <!-- xmlns:atom -->
  <atom:link href=" "/>                <!-- xmlns:atom -->
  <address>...</address>                <!-- string -->
  <xal:AddressDetails>...</xal:AddressDetails>  <!-- xmlns:xal -->
<phoneNumber>...</phoneNumber> <!-- string -->
<Snippet maxLines="2">...</Snippet> <!-- string --> <description>...</description> <!-- string --> <AbstractView>...</AbstractView> <!-- Camera or LookAt --> <TimePrimitive>...</TimePrimitive> <styleUrl>...</styleUrl> <!-- anyURI --> <StyleSelector>...</StyleSelector> <Region>...</Region> <Metadata>...</Metadata> <!-- deprecated in KML 2.2 --> <ExtendedData>...</ExtendedData> <!-- new in KML 2.2 -->
<!-- specific to Placemark element --> <Geometry>...</Geometry> </Placemark>

说明

地标是带有相关几何图形的地图项。在 Google 地球中,地标显示为“位置”面板中的列表项。点地标带有一个关联图标,该图标会在3D查看器中的地球上标记一个点(在 Google 地球3D查看器中,点地标是您可以点击或滚动的唯一对象。其他几何图形对象在3D查看器中没有图标。要让用户能够在 3D 查看器中点击某些内容,您需要创建一个同时包含点和其他几何图形对象的 MultiGeometry 对象。)

Placemark 的特有元素

示例

<Placemark>
  <name>Google Earth - New Placemark</name>
  <description>Some Descriptive text.</description>
  <LookAt>
    <longitude>-90.86879847669974</longitude>
    <latitude>48.25330383601299</latitude>
    <range>440.8</range>
    <tilt>8.3</tilt>
    <heading>2.7</heading>
  </LookAt>
  <Point>
    <coordinates>-90.86948943473118,48.25450093195546,0</coordinates>
  </Point>
</Placemark>

扩展源

包含方

另请参见

<Point>

语法

<Point id="ID">
  <!-- specific to Point -->
  <extrude>0</extrude>                        <!-- boolean -->
  <altitudeMode>clampToGround</altitudeMode>
        <!-- kml:altitudeModeEnum: clampToGround, relativeToGround, or absolute -->
        <!-- or, substitute gx:altitudeMode: clampToSeaFloor, relativeToSeaFloor -->
  <coordinates>...</coordinates>              <!-- lon,lat[,alt] -->
</Point>

说明

用经度、纬度和(可选)高度定义的地理位置。地标中包含点时,点本身会判断地标名称和图标的位置。点处于凸出状态时,可用折线将它连到地面。该“绳索”使用当前的 LineStyle。

Point 的特有元素

<extrude>
布尔值。指定是否用折线将点连接到地面。要凸出某个点,<海拔模式> 的值必须为 relativeToGroundrelativeToSeaFloor绝对。该点凸出的方向为地球球体中心。
<altitudeMode>
指定如何解释 <Coordinates> 元素中的高度分量。可能的值包括:
  • clampToGround -(默认)表示忽略高度规范(例如在 <Coordinates> 标记中)。
  • relativeToGround - 设置相应元素相对于特定位置实际地面高度的高度值。例如,如果某位置的地面高度正好与海平面齐平,且某点的高度被设置为9米,那么在该模式下点地标高度的图标高度是9米。然而,如果是在地面高度高于海平面10米的位置上设置相同的坐标,则该坐标的高度是19米。该模式的典型应用情境是放置电话线杆或滑雪缆索。
  • absolute - 设置相对于海平面的坐标高度,无论该元素下的地形的实际高度如何。例如,如果您使用绝对高度模式将坐标高度设置为 10 米,那么当下面的地形也高于海平面 10 米时,点地标的图标看上去就在地面上。如果地形高于海平面3米,那么该地标看上去就悬空高于该地形7米。该模式的典型应用情境是放置飞机。
<gx:heightMode>
Google 扩展元素命名空间中的 KML 扩展元素,允许存在以海底为基准的高度。具体值包括:
  • relativeToSeaFloor - 将高度解释为以海底为基准的值(以米为单位)。如果该点位于陆地上方而不是海面上方,则会将海拔高度解读为地面以上的高度。
  • clampToSeaFloor - 用于忽略高度规范,并将点置于海底。如果该点位于陆地上方而不是海面上方,则会将该点置于地面上。
<coordinates>(必需)
一个元组,由经度、纬度和海拔的浮点值(按此顺序)组成。经度和纬度值以度为单位,其中
  • 经度 ≥ -180 且 <= 180
  • 纬度 ≥ -90 且 ≤ 90
  • height 值(可选)在海平面以上的高度(以米为单位)
不要在描述坐标的三个值之间添加空格。

示例

<Point>
  <coordinates>-90.86948943473118,48.25450093195546</coordinates>
</Point>

扩展源

包含方

<Polygon>

语法

<Polygon id="ID">
  <!-- specific to Polygon -->
  <extrude>0</extrude>                       <!-- boolean -->
  <tessellate>0</tessellate>                 <!-- boolean -->
  <altitudeMode>clampToGround</altitudeMode>
        <!-- kml:altitudeModeEnum: clampToGround, relativeToGround, or absolute -->
        <!-- or, substitute gx:altitudeMode: clampToSeaFloor, relativeToSeaFloor -->
  <outerBoundaryIs>
    <LinearRing>
      <coordinates>...</coordinates>         <!-- lon,lat[,alt] -->
    </LinearRing>
  </outerBoundaryIs>
  <innerBoundaryIs>
    <LinearRing>
      <coordinates>...</coordinates>         <!-- lon,lat[,alt] -->
    </LinearRing>
  </innerBoundaryIs>
</Polygon>

说明

多边形是用外边界和0个或多个内边界定义的。而边界则是由 LinearRing 定义的。当多边形向外凸出时,其边界会连接到地面,以形成额外的多边形,从而呈现出建筑物或盒子的外观。凸出的多边形会使用 <PolyStyle> 来指定其颜色、颜色模式和填充。

多边形的 <Coordinates> 必须按逆时针顺序指定。多边形遵守“右手法则”,其中规定如果您按照用以指定坐标的方向来放置右手手指,您拇指所指的方向将与多边形的几何法线大方向一致(在3D图形中,几何法线用于偏离多边形正面的光线和点)。由于 Google 地球只填充多边形的正面,因此只有在以正确的顺序指定坐标时,您才能获得需要的效果。否则,多边形将显示为灰色。

注意:在 Google 地球中,<heightMode> 为 clampToGround 的多边形是沿着同位线方向;而 <heightMode> 为 clampToGround 的 LinearRing(本身)则是沿着大圆方向。

Polygon 的特有元素

<extrude>
布尔值。指定是否将多边形连接到地面。要使某个多边形向外凸出,高度模式必须为 relativeToGroundrelativeToSeaFloor绝对。只有各个端点才会凸出,而几何图形本身则不会(例如,一个矩形会变为具有5个面的箱体)。多边形的端点凸出的方向为地球球体中心。
<tessellate>
多边形不会使用此字段。要允许多边形沿着地形移动(即启用曲面细分),请指定高度模式为 clampToGroundclampToSeaFloor
<altitudeMode>
指定如何解释 <Coordinates> 元素中的高度分量。可能的值包括:
  • clampToGround -(默认)表示忽略高度规范(例如在 <coordinates> 标记中)。
  • relativeToGround - 设置相应元素相对于特定位置实际地面高度的高度值。例如,如果某位置的地面高度正好与海平面齐平,且某点的高度被设置为9米,那么在该模式下点地标高度的图标高度是9米。然而,如果是在地面高度高于海平面10米的位置上设置相同的坐标,则该坐标的高度是19米。该模式的典型应用情境是放置电话线杆或滑雪缆索。
  • absolute - 设置相对于海平面的坐标高度,无论该元素下的地形的实际高度如何。例如,如果您使用绝对高度模式将坐标高度设置为 10 米,那么当下面的地形也高于海平面 10 米时,点地标的图标看上去就在地面上。如果地形高于海平面3米,那么该地标看上去就悬空高于该地形7米。该模式的典型应用情境是放置飞机。
<gx:heightMode>
Google 扩展元素命名空间中的 KML 扩展元素,允许存在以海底为基准的高度。具体值包括:
  • relativeToSeaFloor - 将 <altitude> 解释为以海底为基准的高度值(以米为单位)。如果该点位于陆地上方而不是海面上方,则会将海拔高度解读为地面以上的高度。
  • clampToSeaFloor - 用于忽略高度规范,并将点置于海底。如果该点位于陆地上方而不是海面上方,则会将该点置于地面上。
<outerBoundaryIs>(必需)
包含 <LinearRing> 元素。
<innerBoundaryIs>
包含 <LinearRing> 元素。一个多边形可包含多个 <innerBoundaryIs> 元素,从而在多边形内创建多个刘海屏。

示例

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Polygon.kml</name>
<open>0</open>
<Placemark>
<name>hollow box</name>
<Polygon>
<extrude>1</extrude>
<altitudeMode>relativeToGround</altitudeMode>
<outerBoundaryIs>
<LinearRing>
<coordinates>
-122.366278,37.818844,30
-122.365248,37.819267,30
-122.365640,37.819861,30
-122.366669,37.819429,30
-122.366278,37.818844,30
</coordinates>
</LinearRing>
</outerBoundaryIs>
<innerBoundaryIs>
<LinearRing>
<coordinates>
-122.366212,37.818977,30
-122.365424,37.819294,30
-122.365704,37.819731,30
-122.366488,37.819402,30
-122.366212,37.818977,30
</coordinates>
</LinearRing>
</innerBoundaryIs>
</Polygon>
</Placemark>
</Document>
</kml>

扩展源

包含方

<PolyStyle>

语法

<PolyStyle id="ID">
  <!-- inherited from ColorStyle -->
  <color>ffffffff</color>            <!-- kml:color -->
  <colorMode>normal</colorMode>      <!-- kml:colorModeEnum: normal or random -->

  <!-- specific to PolyStyle -->
  <fill>1</fill>                     <!-- boolean -->
  <outline>1</outline>               <!-- boolean -->
</PolyStyle>

说明

指定所有多边形的绘制样式,其中包括多边形凸出(有点像建筑物的墙)和折线凸出(有点像实心篱笆)。

PolyStyle 的特有元素

<fill>
布尔值。指定是否填充多边形。
<outline>
布尔值。指定是否为多边形添加轮廓。多边形轮廓使用当前的 LineStyle。

示例

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>PolygonStyle.kml</name>
<open>1</open>
<Style id="examplePolyStyle">
<PolyStyle>
<color>ff0000cc</color>
<colorMode>random</colorMode>
</PolyStyle>
</Style>
<Placemark>
<name>hollow box</name>
<styleUrl>#examplePolyStyle</styleUrl>
<Polygon>
<extrude>1</extrude>
<altitudeMode>relativeToGround</altitudeMode>
<outerBoundaryIs>
<LinearRing>
<coordinates>
-122.3662784465226,37.81884427772081,30 -122.3652480684771,37.81926777010555,30 -122.365640222455,37.81986126286519,30 -122.36666937925,37.81942987753481,30 -122.3662784465226,37.81884427772081,30 </coordinates>
</LinearRing>
</outerBoundaryIs>
<innerBoundaryIs>
<LinearRing>
<coordinates>
-122.366212593918,37.81897719083808,30 -122.3654241733188,37.81929450992014,30 -122.3657048517827,37.81973175302663,30 -122.3664882465854,37.81940249291773,30 -122.366212593918,37.81897719083808,30 </coordinates>
</LinearRing>
</innerBoundaryIs>
</Polygon>
</Placemark>
</Document>
</kml>

扩展源

包含方

<Region>

语法

<Region id="ID"> 
  <LatLonAltBox>
    <north></north>                            <!-- required; kml:angle90 -->
    <south></south>                            <!-- required; kml:angle90 -->
    <east></east>                              <!-- required; kml:angle180 -->
    <west></west>                              <!-- required; kml:angle180 -->
    <minAltitude>0</minAltitude>               <!-- float -->
    <maxAltitude>0</maxAltitude>               <!-- float -->
    <altitudeMode>clampToGround</altitudeMode>
        <!-- kml:altitudeModeEnum: clampToGround, relativeToGround, or absolute -->
        <!-- or, substitute gx:altitudeMode: clampToSeaFloor, relativeToSeaFloor -->
  </LatLonAltBox>
  <Lod>
    <minLodPixels>0</minLodPixels>             <!-- float -->
    <maxLodPixels>-1</maxLodPixels>            <!-- float -->
    <minFadeExtent>0</minFadeExtent>           <!-- float -->
    <maxFadeExtent>0</maxFadeExtent>           <!-- float -->
  </Lod>
</Region> 

说明

区域包含边框 (<LatLonAltBox>),此边框会描述用地理坐标和高度定义的关注区域。此外,区域包含 LOD(详细级别)范围 (<Lod>),该区域会根据投影屏幕尺寸定义关联区域的有效范围。当边框在用户视野内且 LOD 要求得到满足时,我们就会说区域处于“活动状态”。只有当区域处于活动状态时,才会绘制与该区域相关联的对象。如果 <viewRefreshMode> 为 onRegion,则只有当区域处于活动状态时,才加载链接或图标。有关详情,请参阅“KML 主题”页中关于区域的部分。在 Container 或 NetworkLink 的层次结构中,该计算使用层次结构中最接近“上级”的区域。

Region 的特有元素

<LatLonAltBox>(必需)
边界框,用于描述由地理坐标和海拔定义的感兴趣区域。默认值和必填字段如下所示:
<heightMode> 或 <gx:heightMode>
<海拔模式> 的可能值为 clampToGroundrelativeToGround绝对。<gx:heightMode> 的可能值为 clampToSeaFloorrelativeToSeaFloor。另请参阅 <LatLonBox>
<minAltitude>
以米为单位(受海拔模式规范的影响)。
<maxAltitude>
以米为单位(受海拔模式规范的影响)。
<north>(必需)
指定边界框北边的纬度(以 0 到 ±90 的十进制度数表示)。
<south>(必需)
指定边界框南边缘的纬度(以 0 到 ±90 的十进制度数表示)。
<east>(必需)
指定边界框东边的经度(以 0 到 ±180 的十进制度数表示)。
<west>(必需)
指定边界框西边缘的经度(以 0 到 ±180 的十进制度数表示)。
<LatLonAltBox>
<north>43.374</north>
<south>42.983</south>
<east>-0.335</east>
<west>-1.423</west>
<minAltitude>0</minAltitude>
<maxAltitude>0</maxAltitude>
</LatLonAltBox>
<Lod>
Lod细节级别的缩写。<Lod> 描述“活动状态”区域所需的屏幕投射区域的大小。同时它还分别指定了用于淡入(从透明到不透明)和淡出(从不透明到透明)的像素梯度大小。请参阅下图,直观地了解这些参数。
<Lod>
<minLodPixels>256</minLodPixels>
<maxLodPixels>-1</maxLodPixels>
<minFadeExtent>0</minFadeExtent>
<maxFadeExtent>0</maxFadeExtent>
</Lod>
<minLodPixels>(必需)

定义屏幕空间的方形,指定值的边(以像素为单位)。例如,128 定义了 128 x 128 像素的方形。该区域的边界框必须大于此方形(并且小于 maxLodPixels 的方形),才能激活该区域。

如需了解详情,请参阅开发者指南的使用区域一章以及 Google Earth Outreach 文档中的避免区域过载教程。

<maxLodPixels>
以屏幕像素为单位的测量结果,表示给定区域的可见性范围上限。默认值-1表示“处于活动状态的区域范围无限大”。
<minFadeExtent>
几何形状从完全不透明到完全透明的淡出距离。此梯度值会应用于 LOD(可见性)的下限(以屏幕像素为单位)。
<maxFadeExtent>
几何图形从完全透明到完全不透明淡出的距离。此梯度值会应用于 LOD(可见性)的上限(以屏幕像素为单位)。
在下图中,如果 P 是计算出的投影像素尺寸,带圆圈的数字表示以下内容:
if (P < minLodPixels)
  opacity=0                                 //#1 in diagram
else if(P < minLodPixels + minFadeExtent)
  opacity=(P - minLodPixels)/minFadeExtent  //#2 in diagram
else if (P < maxLodPixels - maxFadeExtent)
  opacity=1                                 //#3 in diagram
else if (P < maxLodPixels)
  opacity=(maxLodPixels-P)/maxFadeExtent    //#4 in diagram
else
  opacity=0                                 //#5 in diagram

<Region> 示例

<Region>
  <LatLonAltBox>
    <north>50.625</north>
    <south>45</south>
    <east>28.125</east>
    <west>22.5</west>
    <minAltitude>10</minAltitude>
    <maxAltitude>50</maxAltitude>
  </LatLonAltBox>
  <Lod>
    <minLodPixels>128</minLodPixels>
    <maxLodPixels>1024</maxLodPixels>
    <minFadeExtent>128</minFadeExtent>
    <maxFadeExtent>128</maxFadeExtent>
  </Lod>
</Region> 

扩展源

包含方

<架构>

语法

<Schema name="string" id="ID">
  <SimpleField type="string" name="string">
    <displayName>...</displayName>            <!-- string -->
  </SimpleField>
</Schema>

说明

指定用于将自定义数据添加到 KML 地图项的自定义 KML 架构。“id”属性是必需的,并且在 KML 文件中必须是唯一的。<Schema> 始终是 <Document> 的子元素。

Schema 的特有元素

一个 Schema 元素包含一个或多个 SimpleField 元素。在 SimpleField 中,Schema 会声明自定义字段的类型和名称。它可以视需要指定该自定义字段的 displayName(一种便于用户理解的形式,包含用于在 Google 地球中显示的空格和适当的标点符号)。

<SimpleField type="string" name="string">
自定义字段的声明,必须同时指定该字段的类型名称。如果省略 typename,则该字段会被忽略。类型可以是以下项之一:
  • 字符串
  • int
  • uint
  • short
  • ushort
  • float
  • double
  • bool
<displayName>
向 Google 地球用户显示字段名称时使用的名称(如果有)。请使用 [CDATA] 元素,以避开标准 HTML 标记。

示例

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Schema name="TrailHeadType" id="TrailHeadTypeId"> <SimpleField type="string" name="TrailHeadName"> <displayName><![CDATA[<b>Trail Head Name</b>]]></displayName> </SimpleField> <SimpleField type="double" name="TrailLength"> <displayName><![CDATA[<i>The length in miles</i>]]></displayName> </SimpleField> <SimpleField type="int" name="ElevationGain"> <displayName><![CDATA[<i>change in altitude</i>]]></displayName> </SimpleField> </Schema>
</Document>
</kml>

扩展源

此元素是一个根元素。

包含方

另请参见

<ScreenOverlay>

语法

<ScreenOverlay id="ID">
  <!-- inherited from Feature element -->
  <name>...</name>                      <!-- string -->
  <visibility>1</visibility>            <!-- boolean -->
  <open>0</open>                        <!-- boolean -->
  <atom:author>...<atom:author>         <!-- xmlns:atom -->
  <atom:link href=" "/>                <!-- xmlns:atom -->
  <address>...</address>                <!-- string -->
  <xal:AddressDetails>...</xal:AddressDetails>  <!-- xmlns:xal -->
<phoneNumber>...</phoneNumber> <!-- string -->
<Snippet maxLines="2">...</Snippet> <!-- string --> <description>...</description> <!-- string --> <AbstractView>...</AbstractView> <!-- Camera or LookAt --> <TimePrimitive>...</TimePrimitive> <styleUrl>...</styleUrl> <!-- anyURI --> <StyleSelector>...</StyleSelector> <Region>...</Region> <Metadata>...</Metadata> <!-- deprecated in KML 2.2 --> <ExtendedData>...</ExtendedData> <!-- new in KML 2.2 --> <!-- inherited from Overlay element --> <color>ffffffff</color> <!-- kml:color --> <drawOrder>0</drawOrder> <!-- int --> <Icon>...</Icon> <!-- specific to ScreenOverlay --> <overlayXY x="double" y="double" xunits="fraction" yunits="fraction"/> <!-- vec2 --> <!-- xunits and yunits can be one of: fraction, pixels, or insetPixels --> <screenXY x="double" y="double" xunits="fraction" yunits="fraction"/> <!-- vec2 --> <rotationXY x="double" y="double" xunits="fraction" yunits"fraction"/> <!-- vec2 --> <size x="double" y="double" xunits="fraction" yunits="fraction"/> <!-- vec2 --> <rotation>0</rotation> <!-- float --> </ScreenOverlay>

说明

该元素用于绘制固定在屏幕上的图像叠加层。ScreenOverlay 的使用示例包括罗盘、徽标和平视显示器。ScreenOverlay 的大小调整取决于 <size> 元素。叠加层的定位是通过将 <overlayXY> 指定的图片中的点映射到 <screenXY> 指定的屏幕上的点来处理的。然后,图片会相对于 <rotationXY> 指定的屏幕绕 <rotation> 度旋转一个点。

<Icon> 的子元素 <href> 会指定将用作叠加层的图片。该文件可以存储在本地文件系统中,也可以存储在网络服务器中。如果该元素缺失或该元素不包含 <href> 元素,系统会使用屏幕叠加层定义的颜色和尺寸绘制一个矩形。

ScreenOverlay 的特有元素

<overlayXY>
指定映射到屏幕坐标 (<screenXY>) 的叠加层图片上(或外)的点。该点需要 xy 值,以及这些值的单位。
可以用三种不同的方式指定 xy 值:像素 ("pixels")、图片的小数 ("fraction") 或插入像素 ("insetPixels")(即从图片右上角的偏移值,以像素为单位)。可以以不同的方式指定 x 和 y 位置,例如,x 可以以像素为单位,而 y 可以是小数。坐标系的原点位于图片的左下角。
  • x - 表示叠加层图片上点的 x 分量的像素数、图片比例或像素插入。
  • y - 表示叠加层图片上点的 y 分量的像素数、图片比例或像素插入。
  • xunits - 指定 x 值时所使用的单位。"fraction" 表示 x 值是图片的比例。"pixels" 表示以像素为单位的 x 值。"insetPixels" 表示以图片右边缘为起始的缩进。
  • yunits - 指定 y 值时所使用的单位。"fraction" 表示 y 值是图片的比例。"pixels" 表示以像素为单位的 y 值。"insetPixels" 表示从图片顶部边缘开始缩进。
<screenXY>
指定相对于叠加层图片所映射到的屏幕原点的点。可通过三种不同的方式指定 xy 值:像素 ("pixels")、屏幕的分数 ("fraction") 或嵌入像素 ("insetPixels")(距离屏幕右上角的偏移量,以像素为单位)。 可以以不同的方式指定 x 和 y 位置,例如,x 可以以像素为单位,而 y 可以是小数。坐标系的原点位于屏幕的左下角。
  • x - 表示屏幕上点的 x 分量的像素数、屏幕比例或像素插入。
  • x - 表示屏幕上点的 y 分量的像素数、屏幕比例或像素插入。
  • xunits - 指定 x 值时所使用的单位。"fraction" 表示 x 值是屏幕的比例。"pixels" 表示以像素为单位的 x 值。"insetPixels" 表示从屏幕右边缘开始缩进。
  • yunits - 指定 y 值时所使用的单位。fraction 值表示 y 值是屏幕的比例。"pixels" 表示以像素为单位的 y 值。"insetPixels" 表示从屏幕顶部边缘开始缩进。
例如,<screenXY x=".5" y=".5" xunits="fraction" yunits="fraction"/> 表示屏幕中央的点。
下面是一些示例

将图片居中:

<ScreenOverlay>
  <overlayXY x="0.5" y="0.5" xunits="fraction" yunits="fraction"/>
  <screenXY x="0.5" y="0.5" xunits="fraction" yunits="fraction"/>
</ScreenOverlay>

将图片置于左上角:

<ScreenOverlay>
  <overlayXY x="0" y="1" xunits="fraction" yunits="fraction"/>
  <screenXY x="0" y="1" xunits="fraction" yunits="fraction"/>
</ScreenOverlay> 

将图片置于屏幕右侧:

<ScreenOverlay>
  <overlayXY x="1" y="1" xunits="fraction" yunits="fraction"/>
  <screenXY x="1" y="1" xunits="fraction" yunits="fraction"/>
</ScreenOverlay>  
<rotationXY>
相对于屏幕叠加层旋转的屏幕的点。
<size>
指定屏幕叠加层的图片大小,如下所示:
  • 值为-1表示使用原始尺寸
  • 值为0表示保留宽高比
  • 值为 n 表示会设置尺寸值
例如

要强制图片保持其原始的 x 和 y 尺寸,请将值设置为−1:

<size x="-1" y="-1" xunits="fraction" yunits="fraction"/> 

要强制图片保持其水平尺寸,但占用20%的垂直屏幕空间,请使用以下:

<size x="-1" y="0.2" xunits="fraction" yunits="fraction"/> 

强制图片尺寸调整为100x500像素,请使用以下设置:

<size x="100" y="500" xunits="pixels" yunits="pixels"/> 
<rotation>
表示父级对象的旋转角度。值为0表示不进行旋转。该值是从正北方向逆时针旋转的角度(以度为单位)。您可以用±180之间的值来表示父级对象从0开始旋转的角度。<rotation> 的中心(如果尚未指定 (.5,.5))会在 <rotationXY> 中指定。

示例

以下示例会将图片置于屏幕正中央(使用的是该图片的原始宽度、高度和宽高比)。

<ScreenOverlay id="khScreenOverlay756">
  <name>Simple crosshairs</name>
  <description>This screen overlay uses fractional positioning
   to put the image in the exact center of the screen</description>
  <Icon>
    <href>http://myserver/myimage.jpg</href>
  </Icon>
  <overlayXY x="0.5" y="0.5" xunits="fraction" yunits="fraction"/>
  <screenXY x="0.5" y="0.5" xunits="fraction" yunits="fraction"/>
  <rotation>39.37878630116985</rotation>
  <size x="0" y="0" xunits="pixels" yunits="pixels"/>
</ScreenOverlay>

扩展源

包含方

<Style>

语法

<Style id="ID">
<!-- extends StyleSelector -->

<!-- specific to Style -->
  <IconStyle>...</IconStyle>
  <LabelStyle>...</LabelStyle>
  <LineStyle>...</LineStyle>
  <PolyStyle>...</PolyStyle>
  <BalloonStyle>...</BalloonStyle>
  <ListStyle>...</ListStyle>
</Style>

说明

Style 定义可由 StyleMap 和 Feature 引用的可寻址样式组。样式会影响几何图形在3D查看器中以及地图项在列表视图的“位置”面板中的显示方式。共享样式收集在 <Document> 中,必须为其定义 id,以便使用相应样式的各地图项进行引用。

使用 id 引用 <styleUrl> 中的样式。

示例

<Document>
  <!-- Begin Style Definitions -->
  <Style id="myDefaultStyles">
    <IconStyle>
      <color>a1ff00ff</color>
      <scale>1.399999976158142</scale>
      <Icon>
        <href>http://myserver.com/icon.jpg</href>
      </Icon>
    </IconStyle>
    <LabelStyle>
      <color>7fffaaff</color>
      <scale>1.5</scale>
    </LabelStyle>
    <LineStyle>
      <color>ff0000ff</color>
      <width>15</width>
    </LineStyle>
    <PolyStyle>
      <color>7f7faaaa</color>
      <colorMode>random</colorMode>
    </PolyStyle>
  </Style>
  <!-- End Style Definitions -->
  <!-- Placemark #1 -->
  <Placemark>
    <name>Google Earth - New Polygon</name>
    <description>Here is some descriptive text</description>
    <styleUrl>#myDefaultStyles</styleUrl>
    . . .
  </Placemark>
  <!-- Placemark #2 -->
  <Placemark>
    <name>Google Earth - New Path</name>
    <styleUrl>#myDefaultStyles</styleUrl>
      . . . .
  </Placemark>
</Document>
</kml>

扩展源

包含方

Style 的特有元素

<StyleMap>

语法

<StyleMap id="ID">
  <!-- extends StyleSelector -->
  <!-- elements specific to StyleMap -->
  <Pair id="ID">
    <key>normal</key>              <!-- kml:styleStateEnum:  normal or highlight -->
    <styleUrl>...</styleUrl> or <Style>...</Style>
  </Pair>
</StyleMap>

说明

<StyleMap> 可在两种不同的样式之间进行映射。通常,<StyleMap> 元素用于为地标提供单独的普通样式和突出显示样式,这样当用户将鼠标光标悬停在 Google 地球中的图标上时,就会出现突出显示的版本。

StyleMap 的特有元素

<Pair>(必需)
定义可将模式(normalhighlight)映射到预定义 <styleUrl> 的键值对。<Pair> 包含两个元素(均为必需元素):
  • <key>:用于标识键
  • <styleUrl><Style>,用于引用样式。在 <styleUrl> 中,对于引用的 KML 文档本地样式元素,使用简单的 # 引用即可。对于外部文件中包含的样式,请使用包含 # 引用的完整网址。例如:
<Pair> 
  <key>normal</key>
  <styleUrl>http://myserver.com/populationProject.xml#example_style_off</styleUrl>
</Pair> 

示例

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>StyleMap.kml</name>
<open>1</open>
<Style id="normalState">
<IconStyle>
<scale>1.0</scale>
<Icon>
<href>http://maps.google.com/mapfiles/kml/pal3/icon55.png</href>
</Icon>
</IconStyle>
<LabelStyle>
<scale>1.0</scale>
</LabelStyle>
</Style>
<Style id="highlightState">
<IconStyle>
<Icon>
<href>http://maps.google.com/mapfiles/kml/pal3/icon60.png</href>
</Icon>
<scale>1.1</scale>
</IconStyle>
<LabelStyle>
<scale>1.1</scale>
<color>ff0000c0</color>
</LabelStyle>
</Style>
<StyleMap id="styleMapExample">
<Pair>
<key>normal</key>
<styleUrl>#normalState</styleUrl>
</Pair>
<Pair>
<key>highlight</key>
<styleUrl>#highlightState</styleUrl>
</Pair>
</StyleMap>
<Placemark>
<name>StyleMap example</name>
<styleUrl>#styleMapExample</styleUrl>
<Point>
<coordinates>-122.368987,37.817634,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>

扩展源

包含方

<StyleSelector>

语法

<!-- abstract element; do not create -->
<!-- StyleSelector id="ID" -->                 <!-- Style,StyleMap -->
<!-- /StyleSelector -->

说明

这是一个抽象元素,不能直接在 KML 文件中使用。它是 <Style> 和 <StyleMap> 元素的基本类型。StyleMap 元素会根据地标的当前模式选择样式。派生自 StyleSelector 的某个元素由其 id 和网址进行唯一标识。

StyleSelector 的特有元素

该抽象元素不包含任何子元素。

扩展源

扩展元素

<TimePrimitive>

语法

<!-- abstract element; do not create -->
<!-- TimePrimitive id="ID" -->            <!-- TimeSpan,TimeStamp -->
  <!-- extends Object -->
<!-- /TimePrimitive -->

说明

这是一个抽象元素,不能直接在 KML 文件中使用。该元素的扩展元素为 <TimeSpan> 和 <TimeStamp>。

扩展源

扩展元素

<TimeSpan

语法

<TimeSpan id="ID">
  <begin>...</begin>     <!-- kml:dateTime -->
  <end>...</end>         <!-- kml:dateTime -->
</TimeSpan>

说明

代表由开始和结束 dateTime 限定的时间范围。

如果缺少 <begin> 或 <end>,该时间段的结束时间将不受限制(请参见下面的示例)。

dateDate 是根据 XML 架构时间定义的。请参阅 XML 架构第二部分:数据类型第二版该值可以表示为 yyyy-mm-ddThh:mm:ss.ssszzzzzz,其中 T 是日期和时间之间的分隔符,时区为 Z(对于世界协调时间 (UTC))或 zzzzzz(代表世界协调时间 (UTC) 相对于 ±hh:mm)。此外,该值只能表示为日期。有关示例,请参阅 <TimeStamp>

TimeSpan 的特有元素

<begin>
描述某个时间段的起始时刻。如果缺少此元素,该时间段的起始时间将无限定。
<end>
描述某时间段的结束时刻。如果缺少此元素,该时间段的结束时间将无限定。

示例

以下示例显示代表科罗拉多州存在时间的时间段。该示例只包含 <begin> 标记,因为科罗拉多州在1876年8月1日成为一个州,并且以后一直是一个州:

<Placemark>
  <name>Colorado</name>
  .
  .
  .
  <TimeSpan>
    <begin>1876-08-01</begin>
  </TimeSpan>
</Placemark>

扩展源

包含方

<TimeStamp>

语法

<TimeStamp id="ID">
  <when>...</when>      <!-- kml:dateTime -->
</TimeStamp> 

说明

表示时间长河中的某个瞬间。这是一个简单元素,不包含子元素。该元素的值是 XML 时间中指定的 dateTime(请参见《XML 架构第二部分:数据类型第二版》(XML Schema Part 2: Datatypes Second Edition))。TimeStamp 的精度取决于 <when> 元素中的 dateTime 值。

TimeStamp 的特有元素

<when>
指定某个时刻。值为 dateTime,可以是以下任何一种:
  • dateTime,精确到秒
  • date,精确到天
  • gYearMonth,精确到月
  • gYear,精确到年

以下示例显示了不同精确度的 <when> 值:

  • gYear (YYYY)
<TimeStamp>
  <when>1997</when>
</TimeStamp>
  • gYearMonth (YYYY-MM)
<TimeStamp>
  <when>1997-07</when>
</TimeStamp> 
  • date (YYYY-MM-DD)
<TimeStamp>
  <when>1997-07-16</when>
</TimeStamp> 
  • dateTime (YYYY-MM-DDThh:mm:ssZ)
    此处,T 是日历和每小时时间表示法之间的分隔符,Z 表示世界协调时间 (UTC)。(必须填写秒。)
<TimeStamp>
  <when>1997-07-16T07:30:15Z</when>
</TimeStamp>
  • dateTime (YYYY-MM-DDThh:mm:sszzzzzz)
    此示例先给出本地时间,然后再将 ± 转换转换为世界协调时间 (UTC)。
<TimeStamp>
  <when>1997-07-16T10:30:15+03:00</when>
</TimeStamp>

扩展

包含方

<gx:TimeSpan> 和 <gx:TimeStamp>

该元素是OGC KML 2.2标准的扩展元素,并且受 Google 地球5.0及更高版本的支持。了解详情

扩展命名空间中 <TimeSpan><TimeStamp> 元素的副本。这样就可以在 AbstractView (<Camera><LookAt>)中包含时间值。时间值用于控制历史图像、光照以及带有时间戳的地图项的可见性。

示例

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"
 xmlns:gx="http://www.google.com/kml/ext/2.2">

  <Document>
    <name>Views with Time</name>
    <open>1</open>
    <description>
      In Google Earth, enable historical imagery and sunlight,
      then click on each placemark to fly to that point in time.
    </description>

    <Placemark>
      <name>Sutro Baths in 1946</name>
      <Camera>
        <gx:TimeStamp>
          <when>1946-07-29T05:00:00-08:00</when>
        </gx:TimeStamp>
        <longitude>-122.518172</longitude>
        <latitude>37.778036</latitude>
        <altitude>221.0</altitude>
        <heading>70.0</heading>
        <tilt>75.0</tilt>
      </Camera>
    </Placemark>

    <Placemark>
      <name>Palace of Fine Arts in 2002</name>
      <Camera>
        <gx:TimeStamp>
          <when>2002-07-09T19:00:00-08:00</when>
        </gx:TimeStamp>
        <longitude>-122.444633</longitude>
        <latitude>37.801899</latitude>
        <altitude>139.629438</altitude>
        <heading>-70.0</heading>
        <tilt>75</tilt>
      </Camera>
    </Placemark>

  </Document>
</kml>

<gx:Tour>

该元素是OGC KML 2.2标准的扩展元素,并且受 Google 地球5.0及更高版本的支持。了解详情

语法

<gx:Tour id="ID">
  <name>...</name>
  <description>...</description>
  <gx:Playlist>

    <!-- any number of gx:TourPrimitive elements -->

  </gx:Playlist>
</gx:Tour>

说明

<gx:Tour> 可以包含一个 <gx:Playlist> 元素,而该元素又包含一组 gx:TourPrimitive 元素的有序列表,用于定义任何 KML 浏览器中的游览。详细了解导览

示例

有关游览示例,请参见《KML 开发者指南》的“游览”一章。

包含

  • gx:Playlist - 包含任意数量的 gx:TourPrimitive 元素。一个 <gx:Tour> 元素中可以不包含或包含一个 <gx:Playlist> 元素。
    <gx:Tour>
      <gx:Playlist>
        <!-- gx:TourPrimitive -->
          ...
        <!-- /gx:TourPrimitive -->
    
        <!--- Any number of gx:TourPrimitive elements can be included --->
      </gx:Playlist>
    </gx:Tour>

<gx:TourPrimitive>

该元素是OGC KML 2.2标准的扩展元素,并且受 Google 地球5.0及更高版本的支持。了解详情

语法

<gx:Tour>
  <gx:Playlist>

    <!-- abstract element; do not create -->
    <!-- gx:TourPrimitive -->    <!-- gx:AnimatedUpdate, gx:FlyTo, gx:TourControl, gx:SoundCue, gx:Wait -->
        <!-- extends Object -->
    <!-- /gx:TourPrimitive -->

  </gx:Playlist>
</gx:Tour>

说明

这是一个抽象元素,不能直接在 KML 文件中使用。该元素由 <gx:FlyTo><gx:AnimatedUpdate><gx:TourControl><gx:Wait><gx:SoundCue> 元素扩展。

gx:TourPrimitive 扩展的元素会向 KML 浏览器提供游览说明,包括要飞往的点和这些飞行的持续时间、暂停、KML 地图项的更新以及要播放的声音文件。

这些元素必须包含在 <gx:Playlist> 元素中,而该元素又包含在 <gx:Tour> 元素中。

示例

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">

  <Document>
    <name>gx:AnimatedUpdate example</name>
    <open>1</open>

    <Style>
      <IconStyle id="iconstyle">
        <scale>1.0</scale>
      </IconStyle>
    </Style>

    <Placemark id="mountainpin1">
      <name>New Zealand's Southern Alps</name>
      <styleUrl>#style</styleUrl>
      <Point>
        <coordinates>170.144,-43.605,0</coordinates>
      </Point>
    </Placemark>

    <gx:Tour>
      <name>Play me!</name>
      <gx:Playlist>

        <!-- The order and duration of TourPrimitives is important;
             in this example, the AnimatedUpdate needs
             6.5 seconds to complete. The FlyTo provides 4.1,
             and the Wait 2.4, giving the update time to
             complete before the Tour ends. AnimatedUpdates
             don't hold Tours open, but FlyTos and Waits do.

             For more information, refer to:
             http://developers.google.com/kml/documentation/touring#tourtimelines
        -->

        <gx:AnimatedUpdate>
          <gx:duration>6.5</gx:duration>
          <Update>
            <targetHref></targetHref>
            <Change>
                <IconStyle targetId="iconstyle">
                  <scale>10.0</scale>
                </IconStyle>
            </Change>
          </Update>
        </gx:AnimatedUpdate>

        <gx:FlyTo>
          <gx:duration>4.1</gx:duration>
          <Camera>
            <longitude>170.157</longitude>
            <latitude>-43.671</latitude>
            <altitude>9700</altitude>
            <heading>-6.333</heading>
            <tilt>33.5</tilt>
            <roll>0</roll>
          </Camera>
        </gx:FlyTo>

        <gx:Wait>
          <gx:duration>2.4</gx:duration>  <!-- waiting for the AnimatedUpdate to complete -->
        </gx:Wait>

      </gx:Playlist>
    </gx:Tour>
  </Document>
</kml>

包含方

扩展元素

  • <gx:AnimatedUpdate>
  • <gx:FlyTo>
  • <gx:SoundCue>
    <gx:SoundCue id="ID">
      <href>http://www.example.com/audio/trumpets.mp3</href>   <!-- any URI -->
      <gx:delayedStart>0</gx:delayedStart>                     <!-- double -->
    </gx:SoundCue>
    包含 <href> 元素,该元素指定了要播放的音频文件(采用 MP3、M4A 或 AAC 格式)。该元素不包含持续时间。声音文件会与游览的其余部分并行播放,这意味着在到达 <gx:SoundCue> 游览基元后,下一个游览基元会立即发生。如果在第一个声音文件播放完毕之前插入了另一个声音文件,则这些文件会混在一起。<gx:delayedStart> 元素会指定在开始播放文件之前将声音开始播放的时间延迟若干秒。
  • <gx:TourControl>
    <gx:TourControl id="ID">
      <gx:playMode>pause</gx:playMode>    <!-- gx:playModeEnum: pause -->
    </gx:TourControl>
    包含一个 <gx:playMode> 元素,可在用户采取措施以继续游览之前,暂停游览。
  • <gx:Wait>
    <gx:Wait id="ID">
      <gx:duration>0.0</gx:duration>    <!-- double -->
    </gx:Wait>
    摄像头在上次定义的 gx:AbstractView 处保持静止状态,指定接下来播放下一个 gx:TourPrimitive 的秒数。请注意,等待不会暂停游览时间轴。在摄像头等待期间,当前播放的声音文件和动画更新会继续播放。

扩展

<gx:Track>

该元素是OGC KML 2.2标准的扩展元素,并且受 Google 地球5.2及更高版本的支持。了解详情

语法

<gx:Track id="ID">
  <!-- specific to Track -->
  <altitudeMode>clampToGround</altitudeMode>
      <!-- kml:altitudeModeEnum: clampToGround, relativeToGround, or absolute -->
      <!-- or, substitute gx:altitudeMode: clampToSeaFloor, relativeToSeaFloor -->
  <when>...</when>                         <!-- kml:dateTime -->
  <gx:coord>...</gx:coord>                 <!-- string -->
  <gx:angles>...</gx:angles>               <!-- string -->
  <Model>...</Model>
  <ExtendedData>
    <SchemaData schemaUrl="anyURI">
      <gx:SimpleArrayData kml:name="string">
        <gx:value>...</gx:value>            <!-- string -->
      </gx:SimpleArrayData>
    <SchemaData>
  </ExtendedData>
</gx:Track>

说明

路线描述给定的时间段内对象是如何在地球中移动的。 通过该地图项,您可以在 Google 地球中创建一个可见的对象(点图标或模型),从而可为同一对象多次编码多个位置。在 Google 地球中,用户可以通过时间滑块来按时间移动视图,从而将对象的位置生成动画。

gx:MultiTrack 元素用于将多条路线收集到一个概念性整体中,该整体带有一个沿路线移动的关联图标(或模型)。如果您的同一现实世界对象有多条路线,该地图项会非常有用。<gx:MultiTrack> 的 <gx:interpolate> 布尔值元素会指定是否在一个多路线整体的路线之间插入值。如果值为0,点或模型会在一条路线的终点停止并跳至下一条路线的起点(例如,如果您想用单个地标来表示自己的两日游览,而且您的 GPS 装置在此期间关闭了4个小时,那么您可能要在该装置关闭后又重新打开的各点之间显示中断)。 如果 <gx:interpolate> 的值为1,则将插入第一条路线终点和下一条路线起点之间的值,以便路线显示为一条连续的路径。

有关如何将 GPS 数据导入 Google 地球的详情,请参见《Google 地球用户指南》。

为什么路线很有用?

在 KML 的早期版本(Google 地球5.2之前的版本)中,您可以将时间元素与任意地图项(地标、地面叠加层等)建立关联。不过,您只能将一个时间元素与一个给定的地图项建立关联。路线是一种更有效的将时间数据与可见的地图项建立关联的机制,因为您只要创建一个地图项,当对象在空间中移动时,该地图项就可与多个时间元素建立关联。

此外,路线元素比早期的机制更加强大(正如《KML 开发者指南》中“时间和动画”一章所述),因为 <Track> 提供了一种可在任意时间沿路线插入对象位置的机制。借助这一新功能,Google 地球可显示一定时间内对象的高度和速度曲线(以及自定义数据,如果有的话)的图表。

“少量”数据

当路线中的位置缺少某些数据值时,可以提供空的 <coord/> (<coord></coord>) 或 <angles/> (<angles></angles>) 标记,以平衡数组。空的 <coord/> 或 <angles/> 标记表示给定数据点不存在此类数据,且该值的插入位置应为距其最近的两个正确指定的数据点之间。该行为也适用于路线的 ExtendedData。除 <when> 以外的任何元素均可为空,且将插入距其最近的两个已正确指定的元素之间。

Track 的特有元素

<altitudeMode>
指定如何解释 <Coordinates> 元素中的高度分量。可能的值包括:
  • clampToGround -(默认)表示忽略高度规范(例如在 <gx:coord> 标记中)。
  • relativeToGround - 设置相应元素相对于特定位置实际地面高度的高度值。例如,如果某位置的地面高度正好与海平面齐平,且某点的高度被设置为9米,那么在该模式下点地标高度的图标高度是9米。然而,如果是在地面高度高于海平面10米的位置上设置相同的坐标,则该坐标的高度是19米。
  • absolute - 设置相对于海平面的坐标高度,无论该元素下的地形的实际高度如何。例如,如果您使用绝对高度模式将坐标高度设置为 10 米,那么当下面的地形也高于海平面 10 米时,点地标的图标看上去就在地面上。如果地形高于海平面3米,那么该地标看上去就悬空高于该地形7米。
<gx:heightMode>
Google 扩展元素命名空间中的 KML 扩展元素,允许存在以海底为基准的高度。具体值包括:
  • relativeToSeaFloor - 将高度解释为以海底为基准的值(以米为单位)。如果该点位于陆地上方而不是海面上方,则会将海拔高度解读为地面以上的高度。
  • clampToSeaFloor - 用于忽略高度规范,并将点置于海底。如果该点位于陆地上方而不是海面上方,则会将该点置于地面上。
<when>
位置(在 <gx:coord> 元素中指定)相对应的时间值。<Track> 中的 <when> 元素数量必须等于 <gx:coord> 元素的数量(以及包含的 <gx:angles> 元素)。
<gx:coord>
坐标值,由经度、纬度和海拔三个值组成,不带逗号。例如:
<gx:coord>-122.207881 37.371915 156.000000</gx:coord>

请注意,<gx:coord> 元素的语法与 <Coordinates> 元素的语法不同,后者使用英文逗号分隔经度、纬度和海拔组成部分。 指定的 元素数量应等于时间 () 和位置 () 元素的数量。如有必要,您可以为缺失值指定空的 <gx:coord> 元素。

<gx:angles>
此值用于为曲目内的每次/每个位置对应的图标或模型指定额外的方向、倾斜和滚动值。列出的三个浮点值不带逗号分隔符,表示旋转角度。如果未指定 <gx:angles>,Google 地球会根据对象的轨迹推断出其方向、倾斜度和滚动。指定的 <gx:angles> 元素数量应等于时间 (<when>) 和位置 (<gx:coord>) 元素的数量。如有必要,您可以为缺失值指定空的 <gx:angles> 元素。

目前,图标仅支持方向,但模型支持所有三个值。

以下是设置该值的示例:

<gx:angles>45.54676 66.2342 77.0</gx:angles>
<Model>
如果指定,模型会取代用于表示路线中当前位置的点图标。当在 <gx:Track> 中指定了 <Model> 时,<Model> 的子元素的运行方式如下所示:
  • 忽略 <Location> 元素。
  • 忽略 <altitudeMode> 元素。
  • 以下述方式将 <Oriention> 值与路线方向结合。首先,应用 <Orientation> 旋转,将模型从其本地 (x, y, z) 坐标系转向右侧朝北。然后,应用旋转,旋转应与插入的 <gx:angles> 值相对应(该值在模型沿路线移动时影响其方位、倾斜和旋转)。如果未指定角度,则系统会根据模型的移动推断方向和倾斜度。

    提示:如果您不确定如何指定方向,可忽略 <Model> 中的 <Orientation> 元素,然后观看 Google 地球是如何在模型沿路线移动时对其定位的。如果您发现模型的前面朝向侧边,可在 <Orientation> 中修改 <heading> 元素以旋转该模型,使其指向前方。如果模型不是直立的,请尝试修改 <tilt> 或 <roll> 元素。

<ExtendedData>

KML 文件中早期在 <Schema> 中定义的自定义数据元素。

通常,在轨道上添加与每个时间/位置关联的扩展数据会很有用。例如,如带有扩展数据的路线示例中所示,骑车路线涉及的数据可能包括心率、节奏和功率。在 <Schema> 中,您需要为每个自定义数据类型均定义一个 <gx:SimpleArrayField>。然后,针对每个数据类型添加一个包含 <gx:value> 元素(该元素对应于路线中的各时间/位置)的 <gx:SimpleArrayData>。有关添加新数据字段的详情,请参见 KML 开发者指南添加自定义数据一章。在 Google 地球中,自定义数据会显示在路线的纵剖面图中。

简单示例

此基本示例展示了如何为 <when> 和 <gx:coord> 创建并行的“数组”值。时间和位置值的数量必须相等。

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"
 xmlns:gx="http://www.google.com/kml/ext/2.2">
<Folder>
  <Placemark>
    <gx:Track>
      <when>2010-05-28T02:02:09Z</when>
      <when>2010-05-28T02:02:35Z</when>
      <when>2010-05-28T02:02:44Z</when>
      <when>2010-05-28T02:02:53Z</when>
      <when>2010-05-28T02:02:54Z</when>
      <when>2010-05-28T02:02:55Z</when>
      <when>2010-05-28T02:02:56Z</when>
      <gx:coord>-122.207881 37.371915 156.000000</gx:coord>
      <gx:coord>-122.205712 37.373288 152.000000</gx:coord>
      <gx:coord>-122.204678 37.373939 147.000000</gx:coord>
      <gx:coord>-122.203572 37.374630 142.199997</gx:coord>
      <gx:coord>-122.203451 37.374706 141.800003</gx:coord>
      <gx:coord>-122.203329 37.374780 141.199997</gx:coord>
      <gx:coord>-122.203207 37.374857 140.199997</gx:coord>
    </gx:Track>
  </Placemark>
</Folder>
</kml>

带有扩展数据的路线示例

示例中的粗体突出显示了用于为骑车路线定义和指定自定义数据的元素。这些自定义数据字段的内部名称分别为“heartrate”、“cadence”和“power”。<Schema> 元素用于定义每组值要显示的名称(心率、频率和力量),并为每个新字段指定数据类型(心率和节奏为 int 类型,功率为 float 类型)。在 Google 地球中,此自定义数据将与路线的高度配置文件一起显示。

该示例是一个比较真实的路线演示,其中包括用于突出显示模式和普通模式的自定义图标、分隔图标和线条样式。但请注意,该示例仅包含七组数据值。真正的示例包含成千上万个值(数据由 Sean Broeder 友情提供。该数据是使用带有相关心率监测器和功率计的 Garmin Edge 705 收集的。)

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2">
  <Document>
    <name>GPS device</name>
    <Snippet>Created Wed Jun 2 15:33:39 2010</Snippet>

    <!-- Normal track style -->
    <LookAt>
      <gx:TimeSpan>
        <begin>2010-05-28T02:02:09Z</begin>
        <end>2010-05-28T02:02:56Z</end>
      </gx:TimeSpan>
      <longitude>-122.205544</longitude>
      <latitude>37.373386</latitude>
      <range>1300.000000</range>
    </LookAt>
    <Style id="track_n">
      <IconStyle>
        <scale>.5</scale>
        <Icon>
          <href>http://earth.google.com/images/kml-icons/track-directional/track-none.png</href>
        </Icon>
      </IconStyle>
      <LabelStyle>
        <scale>0</scale>
      </LabelStyle>

    </Style>
    <!-- Highlighted track style -->
    <Style id="track_h">
      <IconStyle>
        <scale>1.2</scale>
        <Icon>
          <href>http://earth.google.com/images/kml-icons/track-directional/track-none.png</href>
        </Icon>
      </IconStyle>
    </Style>
    <StyleMap id="track">
      <Pair>
        <key>normal</key>
        <styleUrl>#track_n</styleUrl>
      </Pair>
      <Pair>
        <key>highlight</key>
        <styleUrl>#track_h</styleUrl>
      </Pair>
    </StyleMap>
    <!-- Normal multiTrack style -->
    <Style id="multiTrack_n">
      <IconStyle>
        <Icon>
          <href>http://earth.google.com/images/kml-icons/track-directional/track-0.png</href>
        </Icon>
      </IconStyle>
      <LineStyle>
        <color>99ffac59</color>
        <width>6</width>
      </LineStyle>

    </Style>
    <!-- Highlighted multiTrack style -->
    <Style id="multiTrack_h">
      <IconStyle>
        <scale>1.2</scale>
        <Icon>
          <href>http://earth.google.com/images/kml-icons/track-directional/track-0.png</href>
        </Icon>
      </IconStyle>
      <LineStyle>
        <color>99ffac59</color>
        <width>8</width>
      </LineStyle>
    </Style>
    <StyleMap id="multiTrack">
      <Pair>
        <key>normal</key>
        <styleUrl>#multiTrack_n</styleUrl>
      </Pair>
      <Pair>
        <key>highlight</key>
        <styleUrl>#multiTrack_h</styleUrl>
      </Pair>
    </StyleMap>
    <!-- Normal waypoint style -->
    <Style id="waypoint_n">
      <IconStyle>
        <Icon>
          <href>http://maps.google.com/mapfiles/kml/pal4/icon61.png</href>
        </Icon>
      </IconStyle>
    </Style>
    <!-- Highlighted waypoint style -->
    <Style id="waypoint_h">
      <IconStyle>
        <scale>1.2</scale>
        <Icon>
          <href>http://maps.google.com/mapfiles/kml/pal4/icon61.png</href>
        </Icon>
      </IconStyle>
    </Style>
    <StyleMap id="waypoint">
      <Pair>
        <key>normal</key>
        <styleUrl>#waypoint_n</styleUrl>
      </Pair>
      <Pair>
        <key>highlight</key>
        <styleUrl>#waypoint_h</styleUrl>
      </Pair>
    </StyleMap>
    <Style id="lineStyle">
      <LineStyle>
        <color>99ffac59</color>
        <width>6</width>
      </LineStyle>
    </Style>
    <Schema id="schema">
      <gx:SimpleArrayField name="heartrate" type="int">
        <displayName>Heart Rate</displayName>
      </gx:SimpleArrayField>
      <gx:SimpleArrayField name="cadence" type="int">
        <displayName>Cadence</displayName>
      </gx:SimpleArrayField>
      <gx:SimpleArrayField name="power" type="float">
        <displayName>Power</displayName>
      </gx:SimpleArrayField>
    </Schema>
    <Folder>
      <name>Tracks</name>
      <Placemark>
        <name>2010-05-28T01:16:35.000Z</name>
        <styleUrl>#multiTrack</styleUrl>
        <gx:Track>
          <when>2010-05-28T02:02:09Z</when>
          <when>2010-05-28T02:02:35Z</when>
          <when>2010-05-28T02:02:44Z</when>
          <when>2010-05-28T02:02:53Z</when>
          <when>2010-05-28T02:02:54Z</when>
          <when>2010-05-28T02:02:55Z</when>
          <when>2010-05-28T02:02:56Z</when>
          <gx:coord>-122.207881 37.371915 156.000000</gx:coord>
          <gx:coord>-122.205712 37.373288 152.000000</gx:coord>
          <gx:coord>-122.204678 37.373939 147.000000</gx:coord>
          <gx:coord>-122.203572 37.374630 142.199997</gx:coord>
          <gx:coord>-122.203451 37.374706 141.800003</gx:coord>
          <gx:coord>-122.203329 37.374780 141.199997</gx:coord>
          <gx:coord>-122.203207 37.374857 140.199997</gx:coord>
          <ExtendedData>
            <SchemaData schemaUrl="#schema">
              <gx:SimpleArrayData name="cadence">
                <gx:value>86</gx:value>
                <gx:value>103</gx:value>
                <gx:value>108</gx:value>
                <gx:value>113</gx:value>
                <gx:value>113</gx:value>
                <gx:value>113</gx:value>
                <gx:value>113</gx:value>
              </gx:SimpleArrayData>
              <gx:SimpleArrayData name="heartrate">
                <gx:value>181</gx:value>
                <gx:value>177</gx:value>
                <gx:value>175</gx:value>
                <gx:value>173</gx:value>
                <gx:value>173</gx:value>
                <gx:value>173</gx:value>
                <gx:value>173</gx:value>
              </gx:SimpleArrayData>
              <gx:SimpleArrayData name="power">
                <gx:value>327.0</gx:value>
                <gx:value>177.0</gx:value>
                <gx:value>179.0</gx:value>
                <gx:value>162.0</gx:value>
                <gx:value>166.0</gx:value>
                <gx:value>177.0</gx:value>
                <gx:value>183.0</gx:value>
              </gx:SimpleArrayData>
            </SchemaData>
          </ExtendedData>
        </gx:Track>
      </Placemark>
    </Folder>
  </Document>
</kml>

扩展

包含方

<Update>

语法

<Update>
  <targetHref>...</targetHref>    <!-- URL -->
  <Change>...</Change>
  <Create>...</Create>
  <Delete>...</Delete>
</Update>

说明

指定使用已添加的指定网址添加、更改或删除 KML 数据。<targetHref> 指定要修改其数据(在 Google 地球中)的 .KML.kmz 文件。<Update> 始终包含在 NetworkLinkControl 中。而且,包含 NetworkLinkControl 的文件必须已由 NetworkLink 加载。请参阅更新中的“KML 主题”页面,详细了解更新的运作方式。

Update 的特有元素

可包含任意数量的 <Change>、<Create> 和 <Delete> 元素(系统会按顺序对这些元素进行处理)。

<targetHref>(必需)
一个网址,用于指定将由 <Update> 元素修改其数据(在 Google 地球中)的 .KML.kmz 文件。该 KML 文件必须已通过 <NetworkLink> 加载。在该文件中,要修改的元素必须已为其明确定义了 id 属性。
<Change>
修改已使用 <NetworkLink> 加载的元素中的值。在“更改”元素中,要修改的子元素必须包含引用原始元素的 idtargetId 属性。
此更新可被视为“稀疏更新”:在修改后的元素中,仅替换 <Change> 中列出的值;所有其他值保持不变。将 <Change> 应用于一组坐标时,新坐标会替换当前坐标。
此元素的子元素是要修改的元素,这些元素由 targetId 属性标识。
<Create>
向已通过 <NetworkLink> 加载的文件夹或文档添加新元素。<Update> 中的 <targetHref> 元素会指定包含原始文件夹或文档的 .KML.kmz 文件的网址。在此类文件中,您必须已经为要包含新数据的 Folder 或 Document 定义了明确 id。此 id 在引用时是作为 <Create>(包含要添加的元素)中 Folder 或 Document 的 targetId 属性。
创建对象并将其加载到 Google 地球后,它会接受文件夹父级父级文档的网址。要对通过该 Update/Create 机制添加的对象执行后续更新,请将 <targetHref> 设置为原始 Document 或 Folder 的网址(而不是加载了相关更新的文件的网址)。
<Delete>
删除已通过 <NetworkLink> 加载的复杂元素中的地图项。<Update> 中的 <targetHref> 元素会指定包含要删除的数据的 .KML.kmz 文件。在此类文件中,您必须已经为要删除的元素定义了明确的 id。<Delete> 元素会在 targetId 属性中引用此 id
<Delete> 的子元素是唯一可删除元素,分别为 Document、Folder、GroundOverlay、Placemark 和 ScreenOverlay。

<Change> 示例

<NetworkLinkControl>
  <Update>
    <targetHref>http://www/~sam/January14Data/Point.kml</targetHref>
    <Change> 
      <Point targetId="point123">
        <coordinates>-95.48,40.43,0</coordinates>
      </Point>
    </Change>
  </Update>
</NetworkLinkControl> 

<Create> 示例

该示例会在之前创建的 id 为“region24”的 Document 中创建新地标。请注意,如果您想要对“placemark891”执行后续更新,则仍需使用 http://myserver.com/Point.KML 作为 <targetHref>。

<Update>
  <targetHref>http://myserver.com/Point.kml</targetHref>
  <Create>
    <Document targetId="region24">
      <Placemark id="placemark891">
        <Point>
          <coordinates>-95.48,40.43,0</coordinates>
        </Point>
      </Placemark>
    </Document>
  </Create> 
</Update>

<Delete> 示例

该示例会删除之前加载到 Google 地球中的地标(该地标可能已用指定网址通过 NetworkLink 直接加载,或者已通过对原始 Document 的后续更新加载)。

<Update>
  <targetHref>http://www.foo.com/Point.kml</targetHref>
  <Delete>
    <Placemark targetId="pa3556"></Placemark>
  </Delete>
</Update> 

包含方

<Url>

请注意:该元素在KML 2.1版本中已被弃用,而替换为 <Link> ,<Link> 提供了 Region 的附加功能。尽管 <Url> 标记仍可在 Google 地球中使用,但建议使用较新的 <Link> 标记。

使用该元素可以设置指向 KML 文件的链接的位置,定义服务器和查看器更改的刷新选项,以及填充变量以向服务器返回有用的客户端信息。

返回页首