KML 的许多地图项都可以包含 <altitude>
元素或坐标,用于指定该特定地图项高出地平面、海平面或海底的距离。<AbstractView>
元素还可以包含海拔值。
所有海拔值都应随附一个 <altitudeMode>
元素,该元素可告知 Google 地球如何解析海拔值。海拔的测量方式如下:
- 从地球表面 (
relativeToGround
) 测量, - 从海平面上方 (
absolute
) 测量, - 从主水体的底部 (
relativeToSeaFloor
) 测量。
海拔也可忽略(clampToGround
和 clampToSeaFloor
)
海底海拔模式与 KML 扩展元素命名空间
以海底为基准的海拔模式包含在一组符合 KML 标准的扩展模块中,这些模式都使用 gx 前缀。要使用这些模式,您必须先向 KML 文件中的开始 <kml>
元素添加正确的命名空间 URI:
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2">
然后,在使用 clampToSeaFloor 或 relativeToSeaFloor 时,用 <gx:altitudeMode>
替换 <altitudeMode>
。
请注意,某些地理浏览器可能不支持以 gx 为前缀的扩展元素命名空间。Google 地球5.0支持此类命名空间。
海拔模式参考
absolute
absolute 海拔模式用于测量相对于海平面的海拔,此模式会忽略地图项下地形的实际高度。使用此模式时,可以将地图项放置在地下,这时是看不到地图项的。可在地下扩展某个地图项的多个部分,如下例所示。可以使用负值,以将地图项放置在海平面以下。
当知道精确的海拔值时,这种海拔模式就非常有用。例如,GPS 跟踪可以使用绝对 (absolute) 海拔模式显示飞行或潜水时经过的路径。
示例
<?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://www.opengis.net/kml/2.2"> <GroundOverlay> <name>absolute Example</name> <Icon> <href>rectangle.jpg</href> <viewBoundScale>0.75</viewBoundScale> </Icon> <altitude>2744.0</altitude> <altitudeMode>absolute</altitudeMode> <LatLonBox> <north>48.783</north> <south>48.751</south> <east>-121.75</east> <west>-121.89</west> <rotation>-30</rotation> </LatLonBox> </GroundOverlay> </kml>
clampToGround
clampToGround 模式会忽略所有海拔值,并将 KML 地图项沿地形放置在地面上。例如,使用此模式时,GroundOverlay 可以“铺”在地球表面上。如果地图项位于某主水体上方,clampToGround 会将该地图项放置在海平面上。
默认情况下,所有未指定海拔模式的 KML 地图项都将使用 clampToGround 模式。
示例
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <GroundOverlay> <name>clampToGround example</name> <Icon> <href>rectangle.jpg</href> <viewBoundScale>0.75</viewBoundScale> </Icon> <altitude>2744.0</altitude> <altitudeMode>clampToGround</altitudeMode> <LatLonBox> <north>48.783</north> <south>48.751</south> <east>-121.75</east> <west>-121.89</west> <rotation>-30</rotation> </LatLonBox> </GroundOverlay> </kml>
clampToSeaFloor
clampToSeaFloor 模式包含在扩展元素命名空间中。有关重要信息,请参见海底海拔模式和 KML 扩展元素命名空间。
与 clampToGround 模式一样,此模式也会忽略海拔值。此模式会将地图项放置在任何主水体的底部;如果地图项距水体很远,则该地图项将改为附着到地平面。
示例
<?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>clampToSeaFloor example</name> <Polygon> <tessellate>1</tessellate> <gx:altitudeMode>clampToSeaFloor</gx:altitudeMode> <outerBoundaryIs> <LinearRing> <coordinates> 146.793,12.213,0 146.803,12.202,0 146.829,12.218,0 146.807,12.226,0 146.793,12.213,0 </coordinates> </LinearRing> </outerBoundaryIs> </Polygon> </Placemark> </kml>
relativeToGround
relativeToGround 模式用于测量以坐标值正下方地平面为基准的海拔。
例如,当电线杆位于小山上时,可以使用此海拔模式确定电线杆顶端的位置。如果每根电线杆高20米,则每根电线杆顶端的位置会随地球海拔的变化而上下变动。
示例
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Placemark> <name>relativeToGround Example</name> <LineString> <extrude>1</extrude> <altitudeMode>relativeToGround</altitudeMode> <coordinates> -121.835,48.754,700 -121.828,48.764,700 -121.818,48.776,700 -121.794,48.787,700 -121.778,48.781,700 -121.766,48.771,700 -121.768,48.757,700 -121.773,48.747,700 </coordinates> </LineString> </Placemark> </kml>
relativeToSeaFloor
relativeToSeaFloor 模式包含在扩展元素命名空间中。有关重要信息,请参见海底海拔模式和 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>relativeToSeaFloor Example</name> <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>