開発者は、マップオーバーレイを作成する際に、プラットフォーム間でのコンテンツのシームレスな転送を容易にするために、多くの場合標準を利用しています。 広く採用されている標準の 1 つが KML で、 XML 形式でデータをカプセル化します。
KML 仕様には、目印、イメージ、ポリゴンなどのさまざまなオブジェクトが含まれています。その多くには、 Maps API for JavaScript で対応するオブジェクトが含まれています。 KML オブジェクトを効果的にマップオブジェクトに変換するためにmapsjs-data.js、 Maps API にはデータモジュール () が用意されています。
Maps API for JavaScript は、 KML 標準のバージョン 2.1 および 2.2 に準拠した KML ファイルおよびデータセットのインポートをサポートしています。 KML データ構造内のサポートされていないフィーチャーはすべて無視されます。
ポイント
Point KML の要素はマップ上の特定のポイントの位置に対応し、 H.map.Marker Maps API for JavaScript ではクラスオブジェクトとして表されます。
LineString
LineString KML のエレメントは、接続されている一連の直線セグメントに対応し、 H.map.Polyline Maps API for JavaScript ではクラスオブジェクトとして表されます。
LinearString
LinearRing KML のエレメントは閉じた行の文字列を表し、通常は Polygon の境界を定義するために使用されます。 Maps API for JavaScript では、LinearRingが Placemark の子として定義されている場合、 H.map.Polyline クラスを使用して表すことができます。
ポリゴン
Polygon KML のエレメントは、 1 つ以上のリングで構成される閉じたシェイプを表します。 Maps API for JavaScript では、 H.map.Polygon クラスによって表されます。このクラスでは、 outerBoundaryIs エレメントおよびinnerBoundaryIsエレメントを使用して外部境界およびオプションの内部境界(穴)を指定することで、多角形を描画できます。
MultiGeometry
MultiGeometry KML 内のエレメントは、点、直線、多角形などの形状のコレクションを表します。 Maps API for JavaScript では、 H.map.Group クラスを使用して表現できます。このクラスを使用すると、複数のマップオブジェクトをグループ化できます。
フォルダ
KML 内のFolderエレメントは 、複数のPlacemarkエレメントまたは他のFolderエレメントを保持するコンテナを表します。 Maps API for JavaScript では、FolderH.map.Group クラスを使用して表されます。このクラスを使用すると、複数のマップオブジェクトをグループ化できます。
目印です
この Placemark 要素は、マップ上の特定のポイントまたはフィーチャを表します。 場所に関連付けられているさまざまなプロパティおよびデータを含むことができ、 kmlNode オブジェクトの data プロパティと同じように保存されます。 Maps API for JavaScript では、次の目印のプロパティがサポートされています。
StyleMap 要素を使用すると、スタイルのセットを定義して、特定の条件に関連付けることができます。 Maps API for JavaScript は、次の StyleMap サブオブジェクトをサポートしています。
Pair - キー値要素のペアを定義します。次のプロパティが含まれています。
key - 適切なスタイルの選択に使用する条件またはモードを指定します。
styleUrl - キーに関連付けられている URL またはスタイルへの参照を指定します。
例 : HERE Maps で KML オブジェクトをレンダリングします
Polygon ハンガリー国会議事堂エリアの設置面積を表す機能と Point 建物の位置を示す機能を含む以下のサンプル KML ファイルを検討してください。
<?xml version="1.0" encoding="UTF-8"?><kmlxmlns="http://www.opengis.net/kml/2.2"><Document><name>Hungarian Parliament Building</name><!-- Define the shared StyleMap --><Styleid="sharedStyle"><LineStyle><color>7F00FF00</color><!-- Bright green color --><width>3</width></LineStyle><PolyStyle><color>7F00FF00</color></PolyStyle><IconStyle><Icon><href>graphics/pin.svg</href></Icon></IconStyle></Style><!-- Polygon for Hungarian Parliament Building --><Placemark><name>Hungarian Parliament Building Area</name><styleUrl>#sharedStyle</styleUrl><Polygon><outerBoundaryIs><LinearRing><coordinates>
19.046837787680175,47.50743582722211
19.046228091743103,47.50748357749222
19.046378306684005,47.508337106234876
19.045194259500875,47.50839679303735
19.044778959370717,47.50586601292753
19.045909989514485,47.505806323261965
19.046060204455387,47.506624065991105
19.046722917431197,47.50657034605487
19.046837787680175,47.50743582722211
</coordinates></LinearRing></outerBoundaryIs></Polygon></Placemark><!-- Point at the specified coordinates --><Placemark><name>Hungarian Parliament Building Marker</name><description>Location of the Hungarian Parliament Building</description><styleUrl>#sharedStyle</styleUrl><Point><coordinates>19.045494689157493,47.50702397988633</coordinates></Point></Placemark></Document></kml>
次のコード スニペットでは、 Maps API for JavaScript を使用して KML ファイルを解析し、マップにレイヤーとして追加し、 KML オブジェクトに関連付けられているイベントを処理する方法を示します。
// Create reader object initializing it with a document:var reader =newH.data.kml.Reader('path/to/kml/file.kml');// Parse the document:
reader.parse();// Get KML layer from the reader object and add it to the map:
layer = reader.getLayer();
map.addLayer(layer);// KML objects receive regular map events, so add an event listener to the // KML layer:
layer.getProvider().addEventListener('tap',function(ev){// Log map object data to console. The data contains name, description (if present in // KML) and the KML node itself.
console.log(ev.target.getData());});
結果: 次の図は、 Maps API for JavaScript によって衛星マップにレンダリングされた、前の例の KML 日付を示しています。