KML 教學課程

KML 是一種在「Google 地球」瀏覽器 (例如「Google 地球」) 中顯示地理資料的檔案格式。KML 使用標籤式架構與巢狀元素和屬性,並以 XML 標準為基礎。所有標記都須區分大小寫,且必須和 KML 參考資料中列出的完全一致。「參考資料」會指出哪一個標籤是選擇性的。在元素中,標籤顯示的順度必須與「參考資料」列出的順序完全一致。

如果您是 KML 新手,請瀏覽這份文件以及隨附的範例檔案 (SamplesInearth),開始瞭解 KML 檔案的基本結構以及最常用的標記。第一個章節說明瞭可透過 Google 地球使用者介面建立的功能。包括地標、說明、區域疊加層、路徑和多邊形。第二部分則說明需要透過文字編輯器授權 KML 的功能。當您以 .KML.kmz 副檔名儲存文字檔時,Google 地球瀏覽器可瞭解如何顯示文字檔案。

提示:如要在「Google 地球」的地圖項目中查看 KML「程式碼」,只要在「Google 地球」的 3D 檢視器中以滑鼠右鍵按一下該功能,然後選取 [複製] 即可。然後將剪貼簿中的內容貼到任何文字編輯器中。「Google 地球」中顯示的視覺功能會轉換成其對等的 KML 文字。請務必測試這項功能。

此處提供的所有範例都位於 KML 範例檔案中。請先下載該檔案,查看 Google 地球的範例。

瞭解詳情

KML 2.2 參考資料提供 KML 檔案格式的詳細資料。如果您熟悉 XML,也很有興趣瞭解 KML 2.2 架構

如需瞭解如何在 KML 中使用部分主要功能,請參閱開發人員指南

目錄

基本 KML 文件

最簡單的 KML 文件是可直接在「Google 地球」上撰寫的文件,也就是說,您不需要在文字編輯器中編輯或建立任何 KML。您可在 Google 地球中直接建立地標、區域疊加層、路徑和多邊形。

地標

「地標」是「Google 地球」中最常用的功能之一。它會在地球表面上標示一個位置,使用黃色的圖釘進行圖示。最簡單的地標只含 <Point> 元素,用來指定「地標」的位置。您可以為「地標」指定名稱和自訂圖示,也可以加入其他幾何圖形元素。

在 Google 地球中開啟 KML 範例檔案,並展開「地標」子資料夾。這個資料夾包含三種類型的地標,包括 Simplefloatextruded。簡單地標的 KML 程式碼如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Placemark>
<name>Simple placemark</name>
<description>Attached to the ground. Intelligently places itself at the height of the underlying terrain.</description>
<Point>
<coordinates>-122.0822035425683,37.42228990140251,0</coordinates>
</Point>
</Placemark> </kml>

此檔案的結構如下:

  • XML 標頭。每個 KML 檔案都是第 1 行。此行之前不能有空格或其他字元。
  • KML 命名空間宣告。這是每個 KML 2.2 檔案的第 2 行。
  • 包含以下元素的 Placemark 物件:
    • 用來做為「地標」標籤的名稱
    • 顯示在地標的「氣球」中的說明
    • Point,用於指定地球表面上的地標位置 (經度、緯度和選用的高度)

如果您想知道「地標」的位置,就在 Google 的建築 41 上,它就是我們開發「Google 地球」的。

使用者在 Google 地球中通常常被稱為「地標」,實際上就是 KML 中的 <Placemark> 元素。「Google 地球」的「3D 檢視器」中只能用來繪製圖示和標籤。根據預設,這個圖示是慣用的黃色圖釘。在 KML 中,<Placemark> 可包含一或多個幾何圖形元素,例如 LineString、多邊形或模型。不過,只有含有點的 <Placemark> 可以包含圖示和標籤。「路徑」可用來放置圖示,但無法以「點」表示圖形本身。

地標中的 HTML 具描述性

KML 範例檔案提供了幾乎所有可以使用地標文字就能完成的範例。您可以新增連結、字型大小、樣式和顏色,以及指定文字對齊方式和表格。如果您想查看完整的清單,請複製「描述性 HTML」的地標範例 (位於 [樣式和標記] 資料夾中) 並貼到文字編輯器中。

Google 地球的自動標記 (4.0 以上版本)

Google 地球 4.0 版提供自動標記功能,可將 www.google.com 這類文字自動轉換為可供使用者點選的超連結。<description> 標記、<snippet> 標記以及 <BalloonStyle> 的 <text> 元素內的文字,都會自動轉換為標準 HTTP 超連結。您不需要自行加入 <a href= ...> 標記。

使用 CDATA 元素

如果要在 <description> 標記中編寫標準 HTML,可以將 HTML 放入 CDATA 標記中。如果您不是,將角括號寫成實體參照,以防止 Google 地球無法正確剖析 HTML (舉例來說,將 > 符號寫入為 &gt;,而符號 < 則寫成 &lt;)。這是 XML 的標準功能,對 Google 地球而言是獨一無二的。

請考量使用 CDATA 標記與不含 CDATA 的 HTML 標記之間的差異。首先,以下是含有 CDATA 標記的 <description>:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Document> <Placemark> <name>CDATA example</name> <description> <![CDATA[ <h1>CDATA Tags are useful!</h1> <p><font color="red">Text is <i>more readable</i> and <b>easier to write</b> when you can avoid using entity references.</font></p> ]]> </description> <Point> <coordinates>102.595626,14.996729</coordinates> </Point> </Placemark> </Document> </kml>

這裡的 <description> 中沒有 CDATA 標記,因此特殊字元必須使用實體參照:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Document> <Placemark> <name>Entity references example</name> <description> &lt;h1&gt;Entity references are hard to type!&lt;/h1&gt; &lt;p&gt;&lt;font color="green"&gt;Text is &lt;i&gt;more readable&lt;/i&gt; and &lt;b&gt;easier to write&lt;/b&gt; when you can avoid using entity references.&lt;/font&gt;&lt;/p&gt; </description> <Point> <coordinates>102.594411,14.998518</coordinates> </Point> </Placemark> </Document> </kml>

區域疊加層

區域疊加層能讓您將圖像「覆蓋」到地球的地形上。<Icon> 元素包含疊加層圖片的 .jpg 檔案連結。以下是 KML 範例檔案中的區域疊加層疊加層,其顯示了 2001 年埃特納火山噴發的例子:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Folder>
<name>Ground Overlays</name>
<description>Examples of ground overlays</description>
<GroundOverlay>
<name>Large-scale overlay on terrain</name>
<description>Overlay shows Mount Etna erupting on July 13th, 2001.</description>
<Icon>
<href>https://developers.google.com/kml/documentation/images/etna.jpg</href>
</Icon>
<LatLonBox>
<north>37.91904192681665</north>
<south>37.46543388598137</south>
<east>15.35832653742206</east>
<west>14.60128369746704</west>
<rotation>-0.1556640799496235</rotation>
</LatLonBox>
</GroundOverlay>
</Folder> </kml>

請注意,檔案的開頭是與第一個範例相同的兩行:「XML 標頭和 KML 命名空間宣告」。

此範例使用資料夾 (標題為「區域疊加層」) 做為將內容分組及加上標籤的機制。請注意,當您將 KML 範例檔案載入 Google 地球時,資料夾在「位置」面板中的顯示方式。

區域疊加層的位置是由 <LatLonBox> 標記所控制。北極、南緯度,以及經度和緯度。此外,如果 y 軸與北方的方格不相符,則會獲得旋轉值。此範例在重疊廣告使用 JPEG 圖片。Google 地球也支援 BMP、GIF、TIFF、TGA 及 PNG 格式。

路徑

「Google 地球」可以建立許多不同類型的路徑,您可以利用自己的資料輕鬆發揮創意。在 KML 中,路徑是由 <LineString> 元素建立。請查看「Paths」(路徑) 資料夾中的「Absolute Extruded」(絕對抽象) 範例,並查看下列程式碼如何產生形狀:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Document>
<name>Paths</name>
<description>Examples of paths. Note that the tessellate tag is by default
set to 0. If you want to create tessellated lines, they must be authored
(or edited) directly in KML.</description> <Style id="yellowLineGreenPoly">
<LineStyle>
<color>7f00ffff</color>
<width>4</width>
</LineStyle>
<PolyStyle>
<color>7f00ff00</color>
</PolyStyle>
</Style> <Placemark>
<name>Absolute Extruded</name>
<description>Transparent green wall with yellow outlines</description>
<styleUrl>#yellowLineGreenPoly</styleUrl>
<LineString>
<extrude>1</extrude>
<tessellate>1</tessellate>

<altitudeMode>absolute</altitudeMode>
<coordinates> -112.2550785337791,36.07954952145647,2357
-112.2549277039738,36.08117083492122,2357
-112.2552505069063,36.08260761307279,2357
-112.2564540158376,36.08395660588506,2357
-112.2580238976449,36.08511401044813,2357
-112.2595218489022,36.08584355239394,2357
-112.2608216347552,36.08612634548589,2357
-112.262073428656,36.08626019085147,2357
-112.2633204928495,36.08621519860091,2357
-112.2644963846444,36.08627897945274,2357
-112.2656969554589,36.08649599090644,2357 </coordinates>
</LineString> </Placemark>
</Document> </kml>

請注意,這其實是一條沿著地面高處繪製的線條。<tessellate> 標記會將這一行分成更小的區塊,<extrude> 標記則會把線條延伸到地面。

多邊形

您可以使用「多邊形」來建立簡易的建築物和其他形狀。請參閱 KML 範例檔案中的多邊形資料夾,以取得範例。

Pentagon 範例是透過繪製簡單的內外殼,然後將這些外殼向下流到地面而產生。程式碼如下:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Placemark>
<name>The Pentagon</name>
<Polygon>
<extrude>1</extrude>
<altitudeMode>relativeToGround</altitudeMode>
<outerBoundaryIs>
<LinearRing>
<coordinates>
-77.05788457660967,38.87253259892824,100
-77.05465973756702,38.87291016281703,100
-77.05315536854791,38.87053267794386,100
-77.05552622493516,38.868757801256,100
-77.05844056290393,38.86996206506943,100
-77.05788457660967,38.87253259892824,100
</coordinates>
</LinearRing>
</outerBoundaryIs>
<innerBoundaryIs>
<LinearRing>
<coordinates>
-77.05668055019126,38.87154239798456,100
-77.05542625960818,38.87167890344077,100
-77.05485125901024,38.87076535397792,100
-77.05577677433152,38.87008686581446,100
-77.05691162017543,38.87054446963351,100
-77.05668055019126,38.87154239798456,100
</coordinates>
</LinearRing>
</innerBoundaryIs>
</Polygon>
</Placemark> </kml>

2 個進階 KML 文件

本節說明需要使用文字編輯器編寫的 KML 元素,例如幾何圖形的共用樣式、地標的醒目顯示圖示,以及螢幕重疊。「使用手動」的 KML 比使用「Google 地球」介面建立及修改功能更為先進,但是在少數練習之下,大多數使用者都樂意編輯 KML 檔案來新增這些效果。

幾何圖形樣式

在「Google 地球」中建立地圖項目並查看「Google 地球」產生的 KML 程式碼後,您會發現樣式是資料的重要部分。進階使用者會想要瞭解如何定義自己的樣式。

如果您在 KML 文件開頭定義了樣式,也定義了其 ID,您就可以在「文件」的其他部分定義該樣式的幾何圖形、地標和疊加層。由於有超過一個元素可使用相同的樣式,因此這種定義和使用的樣式稱為共用樣式。您只需定義一種樣式,然後可以使用 <styleUrl> 元素多次參照該樣式。如果樣式定義位於同一個檔案中,則樣式 ID 前面會加上 # 符號。如果樣式定義位於外部檔案中,請在 <styleUrl> 元素中加入完整網址。

KML 範例檔案包含數個共用樣式,每個樣式在檔案開頭都會定義一個 ID。請注意,如果 ID 是描述性字串,以便您輕易瞭解其作用,最簡單的方法就是使用樣式 ("transBluePoly") 定義多邊形表面的透明藍色顏色和多邊形 1.5 的線條寬度 (以及預設白色的顏色)。這個樣式是用在 Google 園區範例中的「建築物 41」(在「多邊形」資料夾中):

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Style id="transBluePoly">
<LineStyle>
<width>1.5</width>
</LineStyle>
<PolyStyle>
<color>7dff0000</color>
</PolyStyle>
</Style> <Placemark>
<name>Building 41</name>
<styleUrl>#transBluePoly</styleUrl>
<Polygon>
<extrude>1</extrude>
<altitudeMode>relativeToGround</altitudeMode>
<outerBoundaryIs>
<LinearRing>
<coordinates> -122.0857412771483,37.42227033155257,17
-122.0858169768481,37.42231408832346,17
-122.085852582875,37.42230337469744,17
-122.0858799945639,37.42225686138789,17
-122.0858860101409,37.4222311076138,17
-122.0858069157288,37.42220250173855,17
-122.0858379542653,37.42214027058678,17
-122.0856732640519,37.42208690214408,17
-122.0856022926407,37.42214885429042,17
-122.0855902778436,37.422128290487,17
-122.0855841672237,37.42208171967246,17
-122.0854852065741,37.42210455874995,17
-122.0855067264352,37.42214267949824,17
-122.0854430712915,37.42212783846172,17
-122.0850990714904,37.42251282407603,17
-122.0856769818632,37.42281815323651,17
-122.0860162273783,37.42244918858722,17
-122.0857260327004,37.42229239604253,17
-122.0857412771483,37.42227033155257,17 </coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</Placemark>
</Document>
</kml>

請注意,<styleUrl> 元素是 <Placemark> 的子項 (並非受到所影響的幾何圖形)。

醒目顯示圖示的樣式

在 [樣式和標記] 資料夾中,「醒目標示的圖示」將示範如何使用 KML 建立滑鼠懸停效果。文件定義兩種樣式,一種用於「normalPlacemark」,一個用於「highlightPlacemark」(顯示在遊標圖示上方時顯示)。<StyleMap> 元素有兩個鍵/值組合,分別對應每個圖示樣式和圖示狀態。圖示狀態有兩種:「一般」和「醒目顯示」

基本步驟如下:

  1. 為「地標」的一般圖示定義一個 <Style>,並且為其指派一個 ID (這裡為「正常的地標」)。 <Style> 包含使用實際圖片的 <href> 的 <Icon>,如下所示。
  2. 為「地標」的醒目標示圖示定義一個 <Style>,並指定 ID (在這裡為「highlightPlacemark」)。
  3. 建立 <StyleMap> 元素並指定 ID (「exampleStyleMap」)。地標將參照這個 ID。
  4. 在 <StyleMap> 元素中,為 normal 狀態指定「#normalPlacemark」。
  5. 在 <StyleMap> 元素中,為 highlight 狀態指定「#highlightPlacemark」。
  6. 在地標中,新增一個參照 "#exampleStyleMap" 的 <styleUrl> 元素。
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Highlighted Icon</name>
<description>Place your mouse over the icon to see it display the new icon</description>
<Style id="highlightPlacemark">
<IconStyle>
<Icon>
<href>http://maps.google.com/mapfiles/kml/paddle/red-stars.png</href>
</Icon>
</IconStyle>
</Style>
<Style id="normalPlacemark">
<IconStyle>
<Icon>
<href>http://maps.google.com/mapfiles/kml/paddle/wht-blank.png</href>
</Icon>
</IconStyle>
</Style>
<StyleMap id="exampleStyleMap">
<Pair>
<key>normal</key>
<styleUrl>#normalPlacemark</styleUrl>
</Pair>
<Pair>
<key>highlight</key>
<styleUrl>#highlightPlacemark</styleUrl>
</Pair>
</StyleMap>
<Placemark>
<name>Roll over this icon</name>
<styleUrl>#exampleStyleMap</styleUrl>
<Point>
<coordinates>-122.0856545755255,37.42243077405461,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>

螢幕重疊廣告

您無法在「Google 地球」中直接建立螢幕重疊圖層,因此較不容易建立「區域疊加層」。KML 範例檔案的「螢幕重疊」資料夾中,提供完整的樣本集合。

例如,在 KML 範例檔案中啟用「絕對定位:左上方」資料夾,檢視視窗的左上方會顯示畫面重疊畫面。請使用以下 KML 程式碼建立:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<ScreenOverlay>
<name>Absolute Positioning: Top left</name>
<Icon>
<href>http://developers.google.com/kml/documentation/images/top_left.jpg</href>
</Icon>
<overlayXY x="0" y="1" xunits="fraction" yunits="fraction"/>
<screenXY x="0" y="1" xunits="fraction" yunits="fraction"/>
<rotationXY x="0" y="0" xunits="fraction" yunits="fraction"/>
<size x="0" y="0" xunits="fraction" yunits="fraction"/>
</ScreenOverlay>
</kml>

透過將圖片中的 <疊加層 XY> 指定的點對應到 <screenXY> 指定的螢幕上,即可控制位置。在此情況下,圖片的左上角 (0,1) 與螢幕上的相同點完全一致。

查看資料夾中的其他範例,看看是否能取得其他固定位置,並建立以螢幕大小動態調整的圖片。(請注意,您也可以將 xunitsyunits 指定為「像素」,藉此進行精確度控制)。詳情請參閱 KML 2.2 參考資料

網路連結中包含一個 <Link> 元素,其中包含 <href> (超文參照) 可載入檔案。<href> 可以是本機檔案規格或絕對網址。儘管有名稱,<NetworkLink> 不一定能從網路載入檔案。

連結中的 <href> 會指定以下任一位置:

  • 圖示樣式、區域疊加層和螢幕重疊圖示中的圖示所使用的圖片檔
  • <Model> 元素中使用的模型檔案
  • 透過網路連結載入的 KML 或 KMZ 檔案

指定的檔案可以是本機檔案或遠端伺服器上的檔案。簡單來說,網路連結是將同一大型 KML 檔案分割為多個方便管理且在同一台電腦上運作的方法。

目前,我們所有範例都必須從本機電腦將 KML 程式碼傳送至「Google 地球」。網路連結可讓您從遠端位置提供內容,並常用於將資料發布給大量使用者。如此一來,如果資料需要修改,就只需要在來源位置變更,且所有使用者會自動收到更新後的資料。

KML 的 KML 指令碼

除了指向包含靜態資料的檔案之外,網路連結的 <href> 也可以指向動態產生的資料 (例如位於網路伺服器上的 CGI 指令碼)。只要您瞭解 PHP、Python 或 Perl 等指令碼語言,就能建立能夠將 KML 資料串流 (或檔案) 傳送至每個網路連結的指令碼。

若要透過網路 CGI 提供 KML,您需具備以下兩個條件:

從用戶端 (Google 地球) 對伺服器發出呼叫時,伺服器必須 (1) 傳回 HTTP 200 的回應代碼,以及 (2) 將回應的內容類型設定為 text/plainapplication/vnd.google-earth.kml+xml.

回應必須是有效的 KML。對於複雜的應用程式而言,妥善處理錯誤非常重要。

提示:如要處理錯誤,最簡單的方法是將伺服器錯誤剖析為資料夾名稱的文字。舉例來說,您可以讓伺服器傳回 <Folder><name>database inaccessible</name></Folder> 做為字串。比起連結中斷,這種資訊更加豐富且容易使用。

以下範例使用 Python,但其他指令碼使用語言同樣有效。

產生隨機地標

下列 Python 指令碼會產生緯度經度,並且插入這些值與 <Point> 的 <座標 s 元素中。

#!/usr/bin/python

import random

latitude = random.randrange(-90, 90)
longitude = random.randrange(-180, 180)
kml = (
   '<?xml version="1.0" encoding="UTF-8"?>\n'
   '<kml xmlns="http://www.opengis.net/kml/2.2">\n'
   '<Placemark>\n'
   '<name>Random Placemark</name>\n'
   '<Point>\n'
   '<coordinates>%d,%d</coordinates>\n'
   '</Point>\n'
   '</Placemark>\n'
   '</kml>'
   ) %(longitude, latitude)
print 'Content-Type: application/vnd.google-earth.kml+xml\n'
print kml

以下是含有會載入這個 Python 指令碼「網路連結」的 KML 檔案範例:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Folder>
<name>Network Links</name>
<visibility>0</visibility>
<open>0</open>
<description>Network link example 1</description>
<NetworkLink>
<name>Random Placemark</name>
<visibility>0</visibility>
<open>0</open>
<description>A simple server-side script that generates a new random
placemark on each call</description>
<refreshVisibility>0</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href>http://yourserver.com/cgi-bin/randomPlacemark.py</href>
</Link>
</NetworkLink>
</Folder>
</kml>

以檢視表為基礎的重新整理查詢

標準網路連結是單向連結:資料只會從伺服器流向 Google 地球,以檢視畫面為基礎的重新整理功能可啟用雙向通訊功能。啟用檢視區塊重新整理時,Google 地球會在指定時間傳回檢視座標。這可以是每 n 秒、分鐘或小時,或是檢視畫面停止移動之後,經過了一定的時間。請參閱 KML 2.2 參考資料中的 <viewRefreshMode>

透過以下列方式附加座標的 HTTP GET,將座標傳回伺服器 (這是預設的定界框資訊):

GET /path/to/server/script/query?BBOX=[longitude_west, latitude_south, longitude_east, latitude_north] HTTP/1.1

如果您在要求查詢於舊金山時發出要求,則座標可能會如下所示:

GET /path/to/server/script/query?BBOX=-122.497790,37.730385,-122.380087,37.812331 HTTP/1.1

這項功能可用於部分創意十足的應用程式,但為了協助您快速上手,以下提供一個簡單的範例。

直接在檢視畫面下追蹤地點

下列伺服器端 Python 指令碼會剖析 Google 地球傳送的回傳訊息,並在畫面中央以地標標示。每次重新整理「網路連結」時,系統就會產生新的地標。

#!/usr/bin/python

import cgi

url = cgi.FieldStorage()
bbox = url['BBOX'].value
bbox = bbox.split(',')
west = float(bbox[0])
south = float(bbox[1])
east = float(bbox[2])
north = float(bbox[3])

center_lng = ((east - west) / 2) + west
center_lat = ((north - south) / 2) + south

kml = ( 
   '<?xml version="1.0" encoding="UTF-8"?>\n'
   '<kml xmlns="http://www.opengis.net/kml/2.2">\n'
   '<Placemark>\n'
   '<name>View-centered placemark</name>\n'
   '<Point>\n'
   '<coordinates>%.6f,%.6f</coordinates>\n'
   '</Point>\n'
   '</Placemark>\n'
   '</kml>'
   ) %(center_lng, center_lat)

print 'Content-Type: application/vnd.google-earth.kml+xml\n'
print kml

以下是載入 Python 指令碼之網路連結的 KML:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Folder>
<name>Network Links</name>
<visibility>0</visibility>
<open>0</open>
<description>Network link example 2</description>
<NetworkLink>
<name>View Centered Placemark</name>
<visibility>0</visibility>
<open>0</open>
<description>The view-based refresh allows the remote server to calculate
the center of your screen and return a placemark.</description>
<refreshVisibility>0</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href>http://yourserver.com/cgi-bin/viewCenteredPlacemark.py</href>

<refreshInterval>2</refreshInterval>
<viewRefreshMode>onStop</viewRefreshMode>
<viewRefreshTime>1</viewRefreshTime>
</Link>
</NetworkLink>
</Folder>
</kml>

本範例中說明的原則可用於部分非常複雜的應用程式。舉例來說,如果您有地理資訊資料庫,就可以擷取檢視者的座標,針對該檢視畫面專屬的資料呼叫資料庫,然後以 KML 的形式傳回「Google 地球」。

3 KML MIME 類型

回應 Google 地球 (或任何 Google 地球瀏覽器) 的要求時,KML 伺服器必須符合一組特定規則,Google 地球才能正確解讀回應。

成功後,伺服器必須傳回 HTTP 200 的回應代碼,並將回應的內容類型設為適當的 MIME 類型,相關說明如下。

Google 地球會讀取 KML 和 KMZ 檔案。KML 檔案的 MIME 類型為

  • application/vnd.google-earth.kml+xml

KMZ 檔案的 MIME 類型為

  • application/vnd.google-earth.kmz

如果是 Apache,請將以下幾行內容加入 httpd.conf 檔案:

  • AddType application/vnd.google-earth.kml+xml .kml
  • AddType application/vnd.google-earth.kmz .kmz

如要進一步瞭解如何在 Microsoft 的 IIS 上設定 MIME 類型,請參閱 Microsoft 說明文件

回應的主體必須包含有效的 KML 資料,包括 XML 宣告 (<?xml version="1.0" encoding="UTF-8"?>)。如果伺服器傳回無效的 KML,網路連結將會停止、停用並輸出錯誤訊息。

接下來呢?

如需更多資訊,請參閱開發人員指南,其中會說明 KML 的主要功能。此外,請瀏覽 KML 參考資料,瞭解特定元素的相關資訊。