KML は、Google Earth、Google マップ、モバイル Google マップなどの Earth ブラウザで、地理データの表示に使用するファイル形式です。KML はネストされた要素や属性を含むタグ構造を使用し、XML スタンダードをベースにしています。すべてのタグで大文字と小文字が区別されます。タグは KML リファレンスに一覧表示されているとおりに記述する必要があります。リファレンスでは、どのタグがオプションであるかを示しています。タグは、リファレンスで示される順番に従って特定の要素内に記述する必要があります。 KML を初めて使う場合は、このドキュメントと付属のサンプル ファイル(SamplesInEarth と SamplesInMaps)を参照して、KML ファイルの基本構造と最もよく使われるタグについて確認してください。最初のセクションでは、Google Earth のユーザー インターフェースで作成できるアイテムについて説明します。これには、目印、説明、地面オーバーレイ、パス、ポリゴンなどのアイテムが含まれます。2 番目のセクションでは、テキスト エディタを使って KML を作成する必要のあるアイテムについて説明します。拡張子 .kml または .kmz を付けて保存したテキスト ファイルは、Earth ブラウザで表示できます。 | ![]() |
ヒント: Google Earth 内にあるアイテムの KML ソースコードを見るには、Google Earth の 3D ビューアでそのアイテムを右クリックして、[コピー] をクリックします。次に、クリップボードのデータをテキスト エディタに貼り付けます。Google Earth で視覚的に表示されるアイテムが、対応する KML テキストに変換されます。この機能はぜひ試してみてください。
ここで説明されている例はすべて KML Samples ファイルにあります。最初にこのファイルをダウンロードして、Google Earth で例としてご覧ください。
KML 2.2 リファレンスでは KML ファイル形式について詳しく説明しています。XML を理解しているユーザーは、KML 2.2 スキーマもご覧ください。
KML の主要な機能の使用方法については、デベロッパー ガイドをご覧ください。
最も単純なタイプの KML ドキュメントは、Google Earth 上で直接作成するものです。テキスト エディタで KML を編集したり作成する必要はありません。目印、地面オーバーレイ、パス、ポリゴンはすべて Google Earth で直接作成できます。
目印は、Google Earth で最もよく使われるアイテムの 1 つです。目印は Earth の地表上の特定の位置にマークを表示するもので、黄色いピンなどのアイコンで示されます。最も単純な目印は、目印の場所を指定する <Point> 要素だけを含みます。目印には名前やカスタム アイコンを指定したり、他の図形要素を追加することもできます。
Google Earth で KML Samples ファイルを開いて、Placemarks サブフォルダを展開します。このフォルダには、simple、floating、extruded の 3 つの目印が含まれています。simple 目印の 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>
このファイルの構造は次のとおりです:
この例の目印は、Google の Building 41 を指していますが、これは Google Earth が開発された場所でもあります。
通常、Google Earth で「目印」としてユーザーに表示されるものは、KML では <Point> という子要素を持つ <Placemark> 要素になります。Google Earth の 3D ビューアでアイコンとラベルを描画するには、ポインタ目印を使う必要があります。デフォルトでは、アイコンは黄色いピンになります。KML では、<Placemark> に対して LineString、Polygon、Model などの図形要素を 1 つ以上設定できます。ただし、アイコンとラベルを設定できるのはポインタを持つ <Placemark> のみになります。ポインタはアイコンの位置設定に使われますが、ポインタそのものは画面には表示されません。
KML Samples ファイルには、目印のテキストを使って可能なほぼすべての機能の例が含まれています。リンク、フォント サイズ、スタイル、色を追加したり、テキストの配置や表を指定できます。この一覧を参照するには、「Descriptive HTML」目印の例(Styles and Markup フォルダ内)をコピーしてテキスト エディタに貼り付けてください。
Google Earth 4.0 には、www.google.com のようなテキストを有効なハイパーリンクに自動変換することでユーザーがクリックできるようにする自動マークアップ機能があります。<description> タグ、<Snippet> タグ、<BalloonStyle> の <text> 要素の中のテキストは、すべて標準の HTTP ハイパーリンクに自動変換されます。自分で <a href= ...> タグを追加する必要はありません。
<description> タグ内に標準 HTML を記述する場合は、CDATA タグで囲みます。CDATA タグで囲まない場合は、山かっこをエンティティ参照として記述することで、Google Earth によって HTML が不適切に解析されないようにする必要があります(たとえば、記号 > は >、記号 < は < と記述します)。これは XML の標準機能です。Google Earth 固有の機能ではありません。
HTML マークアップで CDATA タグを使った場合と使わない場合を比較します。最初に CDATA タグを使った <description> を示します:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Document> <Placemark> <name>CDATA example</name> <description> <![CDATA[ <h1>CDATA Tags are useful!</h1> <p><font color="red">Text is <i>more readable</i> and <b>easier to write</b> when you can avoid using entity references.</font></p> ]]> </description> <Point> <coordinates>102.595626,14.996729</coordinates> </Point> </Placemark> </Document> </kml>
次に CDATA タグを使わない <description> を示します。この場合、特殊文字はエンティティ参照として記述します:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Document> <Placemark> <name>Entity references example</name> <description> <h1>Entity references are hard to type!</h1> <p><font color="green">Text is <i>more readable</i> and <b>easier to write</b> when you can avoid using entity references.</font></p> </description> <Point> <coordinates>102.594411,14.998518</coordinates> </Point> </Placemark> </Document> </kml>
地面オーバーレイを使うことで、Earth の地形上に画像を表示できます。<Icon> 要素に、オーバーレイする画像の .jpg ファイルへのリンクを含めます。KML Samples ファイルにある地面オーバーレイの例を次に示します。この例は 2001 年のエトナ山の噴火を示しています:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Folder>
<name>Ground Overlays</name>
<description>Examples of ground overlays</description>
<GroundOverlay>
<name>Large-scale overlay on terrain</name>
<description>Overlay shows Mount Etna erupting on July 13th, 2001.</description>
<Icon>
<href>http://code.google.com/apis/kml/documentation/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>
このファイルの冒頭の 2 行(XML ヘッダーと KML 名前空間宣言)が最初の例と同じであることに注意してください。
この例では、コンテンツをグループ化してラベルを付けるためにフォルダ(「Ground Overlays」という名前)を使っています。KML Samples ファイルを Google Earth に読み込むと、[場所] パネルにフォルダが表示されます。
地面オーバーレイの位置設定は <LatLonBox> タグでコントロールします。北端と南端の緯度、東端と西端の経度を境界値として指定します。さらに、y 軸が方眼北と一致しない画像に対して回転角度を指定します。この例では、オーバーレイに JPEG 画像を使用しています。Google Earth では BMP、GIF、TIFF、TGA、PNG の各形式もサポートされています。
Google Earth ではさまざまなタイプのパスを作成して自由にデータを加工できます。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>
実際には、地面からの標高に描画された 1 本のラインです。このラインは <tessellate> タグによって小さな部分に分割され、<extrude> タグによって地面まで壁のように伸びています。
ポリゴンを使ってシンプルな建物やその他の形状を作成できます。例については、KML Samples ファイルの Polygons フォルダを参照してください。
「The 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>
このセクションでは、テキスト エディタを使って作成する必要がある KML 要素の一部について説明します。これには、図形の共有スタイル、目印の強調表示されたアイコン、画面オーバーレイなどがあります。KML を「手作業」で記述するのは、Google Earth インターフェース上でアイテムを作成や修正するよりもやや高度ですが、大部分のユーザーは少し練習するだけで、問題なく KML ファイルを編集して、これらの効果を追加できるようになるでしょう。
Google Earth でアイテムを作成し、Google Earth によって生成される KML コードを確認すると、データの表示においてスタイルがいかに重要かがわかります。上級ユーザー向けに独自のスタイルを定義する方法を説明します。
KML ドキュメントの冒頭でスタイルを定義し、このスタイルに対して ID も定義することで、このスタイルをドキュメントの他の場所で定義する図形、目印、オーバーレイで使用できるようになります。複数の要素で同じスタイルを使用できるため、この方法で定義して使用するスタイルを共有スタイルと呼びます。特定のスタイルを一度定義すると、<styleUrl> 要素を使って繰り返し参照できます。スタイル定義が同一ファイル内に含まれている場合は、スタイル ID の前に # 記号を付けます。スタイル定義が外部ファイル内に含まれている場合は、<styleUrl> 要素に完全な URL を記述します。
KML Samples ファイルには、複数の共有スタイルが含まれています。それぞれの共有スタイルは、ファイルの冒頭で ID を付けて定義されています。ID はその効果がわかる文字列にしておくと判別しやすくなります。このサンプルでは、スタイル「transBluePoly」の例を示します。この例では、ポリゴンの表面の色を透明な青、ポリゴンの境界線の幅を 1.5(色はデフォルトの白)に定義しています。このスタイルは、Google Campus の例(Polygons フォルダ内)の Building 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>
<Style> が作用する図形の子要素ではなく、<Placemark> の子要素であることに注意してください。
Styles and Markup フォルダの「Highlighted Icon」では、KML を使ってロールオーバー効果を作成する方法を示します。このドキュメントでは、「normalPlacemark」と「highlightPlacemark」(アイコン上にカーソルが当てられたときに表示される)の 2 つのスタイルが定義されています。<StyleMap> 要素には、各アイコン スタイルをアイコンの状態にマップする 2 つのキー/値ペアがあります。アイコンの状態には、normal(通常)と highlight(強調表示)の 2 つがあります。
この例を作成する基本的な手順は次のとおりです:
<?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 Earth で直接作成できないため、地面オーバーレイより難しくなります。KML Samples ファイルの Screen Overlays フォルダにサンプルの包括的なコレクションが含まれています。
たとえば KML Samples ファイルの「Absolute Positioning: Top left」フォルダを有効にすると、ビュー ウィンドウの左上に画面オーバーレイが表示されます。この画面オーバーレイは、次の KML コードで作成されています:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<ScreenOverlay>
<name>Absolute Positioning: Top left</name>
<Icon>
<href>http://code.google.com/apis/kml/documentation/top_left.jpg</href>
</Icon>
<overlayXY x="0" y="1" xunits="fraction" yunits="fraction"/>
<screenXY x="0" y="1" xunits="fraction" yunits="fraction"/>
<rotationXY x="0" y="0" xunits="fraction" yunits="fraction"/>
<size x="0" y="0" xunits="fraction" yunits="fraction"/>
</ScreenOverlay>
</kml>
位置設定は、画像内の <overlayXY> で指定したポイントを画面上の <screenXY> で指定したポイントにマップすることによってコントロールされます。この場合、画像の左上 (0,1) が画面上の同じく左上と一致します。
他の固定位置を設定する方法や、画面サイズに合わせて動的にサイズが変更される画像を作成する方法については、フォルダ内の他の例を確認してください(xunits と yunits を「ピクセル」単位で指定して正確にコントロールすることもできます)。詳しくは KML 2.2 リファレンスをご覧ください。
ネットワーク リンクには、<href>(ハイパーテキスト参照)を含む <Link> 要素が含まれます。この要素によってファイルが読み込まれます。<href> は、ローカル参照でも絶対 URL 参照でも構いません。<NetworkLink> によって、ネットワーク以外の場所にあるファイルも読み込むことができます。
リンクの <href> を使って、次のファイルのいずれかの場所を指定します:
ローカル ファイルかリモート サーバー上のファイルのどちらかを指定できます。ネットワーク リンクの簡単で便利な使用方法は、同一コンピュータ上の 1 つの大きな KML ファイルを管理しやすい小さなファイルに分割することです。
これまでの例では、使用する KML コードをローカルのコンピュータから Google Earth にアップロードする必要がありました。ネットワーク リンクを使うことで、リモートの場所のコンテンツを利用できます。ネットワーク リンクは、多数のユーザーにデータを配信するためによく使用されます。これによって、データの修正が必要な場合は、ソースの場所でデータを変更するだけで、すべてのユーザーが更新されたデータを自動的に受信できます。
ネットワーク リンクの <href> は、静的データを含むファイルだけでなく、ネットワーク サーバーに配置された CGI スクリプトなどによって動的に生成されたデータにもリンクできます。PHP、Python、Perl などのスクリプト言語の知識があれば、各ネットワーク リンクに KML データのストリーム(またはファイル)を配信するスクリプトを作成することも可能です。
ネットワーク CGI を介して KML を配信する際には、次の 2 点に注意してください:
クライアント(Google Earth)からサーバーへの呼び出しに対して、サーバーは(1)レスポンス コード HTTP 200 を返し、(2)レスポンスのコンテンツ タイプを text/plain または application/vnd.google-earth.kml+xml. に設定する必要があります。
レスポンスは有効な KML である必要があります。複雑なアプリケーションの場合、適切なエラー処理が非常に重要になります。
ヒント: エラー処理の簡単な方法として、サーバーのエラーをフォルダ名のテキストとして解析する方法があります。たとえば、サーバーから <Folder><name>database inaccessible</name></Folder> という文字列が返されるようにします。これによって、接続が何の説明もなしに切断されるよりも、ユーザーに状況がわかりやすくなります。
以下の例では Python を使用していますが、他のスクリプト言語も同様に使用できます。
次の Python スクリプトでは、緯度と経度に対してランダム整数値を生成し、それらの値を <Point> の <coordinates> 要素に挿入しています。ネットワーク リンクが更新されるたびに Python スクリプトが再実行され、新しい緯度と経度の値を持つ KML が生成されます。
#!/usr/bin/python import random latitude = random.randrange(-90, 90) longitude = random.randrange(-180, 180) kml = ( '<?xml version="1.0" encoding="UTF-8"?>\n' '<kml xmlns="http://www.opengis.net/kml/2.2">\n' '<Placemark>\n' '<name>Random Placemark</name>\n' '<Point>\n' '<coordinates>%d,%d</coordinates>\n' '</Point>\n' '</Placemark>\n' '</kml>' ) %(longitude, latitude) print 'Content-Type: application/vnd.google-earth.kml+xml\n' print kml
この Python スクリプトを読み込むネットワーク リンクを含む KML ファイルの例を次に示します:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Folder>
<name>Network Links</name>
<visibility>0</visibility>
<open>0</open>
<description>Network link example 1</description>
<NetworkLink>
<name>Random Placemark</name>
<visibility>0</visibility>
<open>0</open>
<description>A simple server-side script that generates a new random
placemark on each call</description>
<refreshVisibility>0</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href>http://yourserver.com/cgi-bin/randomPlacemark.py</href>
</Link>
</NetworkLink>
</Folder>
</kml>
標準のネットワーク リンクは一方向のリンクです。データはサーバーから Google Earth への一方向に流れます。ビューベースの更新によって、双方向の通信が可能になります。ビューベースの更新を有効にすると、指定した時間に Google Earth からサーバーにビュー座標が返されます。これは、n 秒/分/時間ごと、またはビューの停止から特定の時間の経過後を指定できます。詳しくは KML 2.2 リファレンスの <viewRefreshMode> をご覧ください。
座標は、次のように座標を伴う HTTP GET によってサーバーに返されます(これはデフォルトの境界ボックス情報です):
GET /path/to/sever/script/query?BBOX=[longitude_west, latitude_south, longitude_east, latitude_north] HTTP/1.1
ユーザーがサンフランシスコを表示しているときにリクエストが実行された場合、座標は次のようになります:
GET /path/to/server/script/query?BBOX=-122.497790,37.730385,-122.380087,37.812331 HTTP/1.1
この機能は高度なアプリケーションでも使用できますが、まずはシンプルな例を示します。
サーバー側の次のような Python スクリプトによって、Google Earth から送信されたリターン メッセージが解析され、応答として、画面の中央に目印が表示されます。ネットワーク リンクが更新されるたびに新しい目印が生成されます。
#!/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 Earth に返すことができます。
KML サーバーは、Google Earth(または任意の Earth ブラウザ)からのリクエストに応答する際、Google Earth が正しくレスポンスを解釈できるように、一定のルールに従う必要があります。
成功時には、サーバーはレスポンス コード HTTP 200 を返し、レスポンスのコンテンツ タイプを、下記のような適切な MIME タイプに設定する必要があります。
Google Earth では KML ファイルと KMZ ファイルが認識されます。KML ファイルの MIME タイプは次のとおりです。
application/vnd.google-earth.kml+xmlKMZ ファイルの 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 提供のドキュメントをご覧ください。
レスポンスの本文には XML 宣言(<?xml version="1.0" encoding="UTF-8"?>)を含む有効な KML データを含める必要があります。サーバーから無効な KML が返された場合、ネットワーク リンクは停止して無効になり、エラー メッセージが出力されます。
追加情報については、デベロッパー ガイドをご覧ください。KML の主な機能について説明しています。特定の要素の詳細については KML リファレンスもご覧ください。