目次


XSLT、KML、そして Google Maps API を使って地図上にデータをオーバーレイする

第 2 回 データを変換し、使用する

KML オーバーレイ文書を作成し、その文書を Google Maps と Google Earth に表示する

コンテンツシリーズ

このコンテンツは全#シリーズのパート#です: XSLT、KML、そして Google Maps API を使って地図上にデータをオーバーレイする

このシリーズの続きに乞うご期待。

このコンテンツはシリーズの一部分です:XSLT、KML、そして Google Maps API を使って地図上にデータをオーバーレイする

このシリーズの続きに乞うご期待。

XSLT を使って変換するためのソース XML データを入手する

住所の情報とそれらに対応する緯度と経度の座標情報をすべてデータベースに保存したら、まず XML フォーマットでデータを作成し、次に XSLT スタイルシートを使って最終的な KML データを作成します。このためのソリューションとして、いくつかの選択肢があります。例えば、データベースにクエリーを実行しても 1 つのテーブルからしか行が返されないような場合には、簡単な PHP 関数を作成して各列を XML タグの中にラップしてしまうことができます。もっと複雑なデータのための別のソリューションとしては、Erik Wetterberg による MySQL 用の賢明なストアード・プロシージャーを使う方法があります。このストアード・プロシージャーは Mysql Forge からダウンロードすることができ、任意の複雑さを持った階層構造の XML 要素を SQL クエリーの中に直接作成することができます (「参考文献」にリンクがあります)。

ストアード・プロシージャーを使って Mysql から XML を返す

Wetterberg によるソリューションでは、3 つのストアード・プロシージャー (xml_tag()xml_escape()xml_attr()) を使って select 文で取得した列から XML ツリーを作成します。xml_tag() は 4 つの引数 (タグの名前、タグの値 (クエリーの中にあるデータベースの列)、タグの属性、そしてタグのサブ要素) を取ります。タグの属性とサブ要素はそれぞれ 1 つのストリングなので、concat() を使って複数の属性や複数のサブ要素をそれぞれ 1 つのストリングに合成することができます。リスト 1 は、これらのストアード・プロシージャーを使った例を示しており、データベースの各行に対し、1 つの XML 要素がストリングとして作成され、その XML 要素を構成するサブ要素となるのがそのデータベース行の各列です。またこのサブ要素を属性に変換することも xml_attr() を使えば簡単です。

リスト 1. ストアード・プロシージャーを使って PHP で MySQL の結果を XML 要素として取得する
function fetchListingsAsXml() {

  $sql = <<<SQL

      select xml_tag('listing',
             null,
             null,
             concat(xml_tag('id', id, null, null),
                xml_tag('address', address, null, null),
                xml_tag('apt_no', apt_no, null, null),
                xml_tag('city', city, null, null),
                xml_tag('state', state, null, null),
                xml_tag('zipcode', zipcode, null, null),
                xml_tag('longitude', longitude, null, null),
                xml_tag('latitude', latitude, null, null),
                xml_tag('apt_type', apt_type, null, null),
                xml_tag('rent', rent, null, null),
                xml_tag('notes', xml_escape(notes), null, null)))
      as xml
      from listing;

SQL;

 return fetchMysqlXml('listings', $sql);
}

function fetchMysqlXml($tag, $sql) {

  if (! $result = mysql_query($sql)) {
    die (mysql_error());
  }

  $xml = '';
  while ($row = mysql_fetch_array($result)) {
    $xml .= $row[0];
  }

  return "<$tag>$xml</$tag>";
}

この SQL クエリーはストアード・プロシージャー (xml_tag()) を使うことによって、返されるデータの行ごとに XML の listing (部屋の賃貸情報) 要素を 1 つ作成します。この listing 要素の値はサブ要素の形で得られるため、listing 要素の値を得るための引数にはヌルを渡しています。属性パラメーターとしてもヌルを渡しており、サブ要素パラメーターとしては、さらに xml_tag() を呼び出すことで生成された、各サブ要素のタグを連結したストリングを渡しています。このサブ要素パラメーターとして使われている xml_tag() の呼び出しでは、タグの値としては選択したデータベース列を、タグの属性とタグのサブ要素としてはヌルを渡しています。

こうすることによって結果セットの中では 1 行ごとに 1 つの XML タグが生成されますが、最上位レベルの要素は作成されません。最上位レベル要素の作成を簡単にするために、fetchMysqlXml() 関数は最上位レベルの集約要素の名前とクエリーを引数に取るようになっています (このクエリーは、おそらく上述のストアード・プロシージャーを使って XML 要素ストリングを作成しているはずです)。そしてこの関数は、複数行のストリングを連結し、クエリーの結果の各行にサブ要素を 1 つの含んだ形の集約 XML 要素を作成します (リスト 2)。

リスト 2. XML に変換された、データベースのデータ
<listings>
<listing>
<id>10</id>
<address>3 Irving Place</address>
<apt_no>3A</apt_no>
<city>New York</city>
<state>NY</state>
<zipcode>10003</zipcode>
<longitude>-73.988639</longitude>
<latitude>40.734091</latitude>
<apt_type>studio</apt_type>
<rent>2800</rent>
<notes/>
</listing>
<listing>
<id>11</id>
<address>123 E.34th St.</address>
<apt_no>2D</apt_no>
<city>New York</city>
<state>NY</state>
<zipcode>10016</zipcode>
<longitude>-73.980182</longitude>
<latitude>40.746595</latitude>
<apt_type>1br</apt_type>
<rent>2300</rent>
<notes>great views, A/C incl.</notes>
</listing>
</listings>

XML による部屋の賃貸情報を KML オーバーレイ・データに変換する

データベースから XML フォーマットでデータを取得できると、そのデータを XSLT を使って KML に変換し、地図上にオーバーレイできるデータ、あるいは Google Earth にインポートできるデータを作成することができます (次のセクションではこれを行います)。

この例のデータは、ニューヨークのマンハッタンで (おそらく個々の家主、あるいは不動産仲介業者が保有している) 入居可能な部屋の賃貸情報のリストを表しています。目標とする効果としては、この賃貸情報のリストにある物件の地所ごとにマンハッタンの地図の上に 1 つのブックマークを置けるようにすることです。ブックマークをクリックすると、そのブックマークの名前と説明 (バルーンに表示するための任意の妥当な HTML による説明) を含むバルーンが表示されます。この例では、ブックマークをクリックするとポップアップ表示されるバルーンには、そのブックマークが付けられた建物の中で入居可能なすべての部屋の賃貸情報が表示されます。

目標は、リスト 2 のソース XML データをリスト 3 のような KML に変換することです。

リスト 3. KML 出力の例
<?xml version="1.0"?>
<kml xmlns="http://earth.google.com/kml/2.2">
    <Document>
        <name>Jake's Apartment Rentals</name>
        <description>A map of available apartments - click a bookmark to see
                             	available apartments there.</description>
            <Placemark xmlns="">
                <name>Address 220 E. 22nd St.  (2 listings)</name>
                <description>
            <![CDATA[
                <div>APT 1A: $2250,  new kitchen, H/W floors</div>
                        <div>
                            APT 2S: $2500, loft space, sliding glass doors
                        </div>
                     ]]>
               </description>
               <Point>
                   <coordinates>-73.982488, 40.737675</coordinates>
               </Point>
           </Placemark>
           <Placemark xmlns="">
               <name>Address 214 E. 73rd St.  (2 listings)</name>
               <description>
            <![CDATA[
                <div>APT 2C: $2000, everything brand new</div>
                        <div>
                          APT 4A: $2400, elevator, A/C incl, gorgeous
                        </div>
                    ]]>
               </description>
               <Point>
                   <coordinates>-73.959088, 40.769987</coordinates>
               </Point>
           </Placemark>
       </Document>
</kml>

リスト 3 は name 要素と description 要素、そして Placemark 要素を含む KML 文書であり、Placemark 要素の一つひとつは地球上のある地点の情報を表しています。この文書の各 Placemark 要素には、物件名 (name 要素) と物件の説明 (description 要素)、そしてその Placemark を (経度と緯度、そしてオプションとしての高度という) 3D 座標で指定する Point 要素が含まれています。各 Placemark が Google マップでのブックマークになります。ブックマークをクリックするとバルーンが開き、そのバルーンの中には物件名が太字で表示され、物件名の下にはその物件の説明が表示されます (図 1)。

図 1. Google マップに表示された Placemark
Google マップに表示された Placemark
Google マップに表示された Placemark

バルーンの中では部屋の賃貸情報が、それぞれ別の行に表示されることに注目してください。Google マップは description 要素をそのまま HTML として表示するため、各行に <br/> が含まれているか、あるいは各部屋の賃貸情報ごとに <div> 要素でラップされている必要があります。description 要素には任意の HTML を含めることができますが、その description フィールドの内容を CDATA 要素の中にラップする必要があります。

XSLT スタイルシートを作成する

オリジナルの XML データを KML に変換するためには、まずスタイルシートを作成します (リスト 4)。

リスト 4. KML に変換するための XSLT スタイルシートのスケルトン
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:key name="listings-by-address" match="listing" use="address" />

  <xsl:template match="/">
    <kml xmlns="http://earth.google.com/kml/2.2">
      <Document>

    <name>Jake's Apartment Rentals</name>
    <description>A map of available apartments - click a bookmark to see
               available apartments there.</description>

    <xsl:apply-templates select="listings"/>

      </Document>
    </kml>
  </xsl:template>

</xsl:stylesheet>

この <xsl:template> はソース文書のルートに対して処理を行い、name と description のみを持つスケルトンとしての KML 文書を作成し、<xsl:apply-templates> によってルートの唯一の子要素である listings 要素を呼び出します。

文書の先頭の方にある <xsl:key> は listing 要素を住所によってグループ分けします。というのも、各 Placemark は 1 つの建物を表すため (その建物の中には入居可能な部屋がたくさんあるかもしれません)、建物の Placemark 要素を表示する際には建物ごとに listing 要素 をグループ分けする必要があります。取得される XML データは listing 要素を単純に並べただけであるため、これらの要素を住所ごとにスタイルシートの中でグループ分けします。

部屋の賃貸情報を XSLT の中で建物の住所ごとにグループ分けする

ここでは XSLT キーを使ってグループ分けを行う、Muenchian グループ化 (「参考文献」を参照) という手法を使います。この手法では XSLT キーを使って、1 つの基準に一致する一連の要素を素早く参照できる索引を作成します。これはグループ化のための自然なメカニズムであり、(簡単とは言えない他のいくつかの手法以外に) このメカニズムをテンプレートの中で使用することで、KML の中でグループごとに 1 つの Placemark を表示することができます。

このグループ化動作では、スタイルシートが次の 2 つのことを行う必要があります。

  • 建物固有の住所ごとに 1 つ決まるグループ・リーダーを文書の中で収集し、Placemark 要素を作成する必要があります。
  • 建物固有の住所ごとに、その住所を持つすべての入居可能な部屋の賃貸情報をテンプレートに渡して処理し、この場合、その Placemark 要素に含まれる部屋の賃貸情報ごとに 1 つの <div> 要素に入れる必要があります。

グループ化プロセスを開始し、固有の住所 (グループ・リーダー) を収集する

次の <xsl:template> は listings タグに対して処理を行い、このグループ化動作を開始します (リスト 5)。

リスト 5. listings 要素に対する <xsl:template>
<xsl:template match="listings">
    <xsl:apply-templates
       select="listing[count(. | key('listings-by-address', address)[1]) = 1]"
       mode="first-in-group"/>
</xsl:template>

このテンプレートの内容を最初のテンプレートに直接入れてしまうこともできますが、分割しておいた方がコードを追いやすくなります。このテンプレートは <xsl:apply-templates> によって、文書の中で建物の住所が同じ listing 要素に対して 1 つの listing 要素、つまりグループ・リーダーだけを呼び出します。各 listing 要素からグループ・リーダーとなる要素を選択するためには少し複雑な手法が必要です。XPath 式 listing[count(. | key('listings-by-address', address)[1]) = 1] には、大括弧の中の基準を満たすすべての listing 要素が一致することになります。式 key('listings-by-address', address) では、先ほどスタイルシートの先頭で作成したキーにアクセスします。この XPath 式は文書の中にある各 listing 要素に対して検証する際、現在検証している listing 要素の住所を使ってこのキーを呼び出します。このキーによって、その住所の値を持つ、その文書の中にあるすべての listing 要素が返されます。[1] によって、この条件に一致する最初の要素が選択されます。パイプ・シンボル (|) によって、この最初に一致する要素と現在検証している要素を結合した要素が作成されます (ピリオド (.) は現在の要素を表します)。この結合要素には、その住所を持つ要素のうち最初の要素というただ一つしかない要素が含まれる (そして重複を排除する) ため、結果的にこの結合要素には 1 つあるいは 2 つの要素しか含まれることがありません。つまり現在検証している要素が文書の中でその住所を持つ最初の要素 (そのグループのリーダー) である場合には 1 つであり、その住所を持つ最初の要素ではない (リーダーではない) 場合には 2 つです。ということは、= 1 によって、この結合要素に 1 つの要素しか含れまないかどうか (つまり現在検証している要素が文書の中でその住所を持つ最初の要素であるかどうか) を検証することになります。その結果、この XPath 式によって、文書の中で建物の住所が同じ listing 要素に対して 1 つの listing 要素だけが収集され、それらを集めたセットが first-in-group というモードの下で listing テンプレートに渡されます。

グループ・レベルの XSLT テンプレート (KML の Placemark を作成する)

さまざまな状況下で同じ基準を満たす要素の突き合わせを行おうとする場合には、<xsl:template> に対してさまざまなモードを指定することができます。これはちょうど、同じ引数を受け付ける 2 つの関数を定義し、それぞれの関数が同じ引数に対して別の処理をすることに相当します。この場合、まずそのグループに対して Placemark 要素を作成し、次にグループ内の各 listing 要素を処理します (どちらの場合も標準的な listing 要素に対して突き合わせを行います)。そのためには listing 要素に対して突き合わせを行う 2 つの <xsl:template> を作成します。一方の <xsl:template> は (後の方 (リスト 5) のテンプレートで選択された) グループ・リーダーに対してグループ・レベルの処理を行い、もう一方の <xsl:template> はグループ内の各 listing 要素の処理を行います。リスト 6 は、この 2 つのテンプレートのうちの最初の方を示しています。

リスト 6. グループ・レベルの Placemark 要素を作成する <xsl:template>
<xsl:template match="listing" mode="first-in-group">
    <Placemark>
      <name>
    <xsl:value-of select="address"/>
    (<xsl:value-of select="count(key('listings-by-address', address))"/> listings)
      </name>
      <description>
    CDATA-START
    <xsl:apply-templates
       select="key('listings-by-address', address)"
       mode="listing-within-group"/>
            CDATA-END
      </description>
      <Point>
    <coordinates>
      <xsl:value-of select="longitude"/>,
      <xsl:value-of select="latitude"/>
    </coordinates>
      </Point>
    </Placemark>
  </xsl:template>

念のため繰り返すと、このテンプレートは listing 要素に対して突き合わせを行いますが、突き合わせを行うのは first-in-group モードが指定されている場合のみです。なぜなら first-in-group モードが指定されるのはグループ・リーダーを収集した先ほどのテンプレート (リスト 5) から呼び出される場合のみだからです。このテンプレートは、その建物に対する Placemark 要素を作成し、地図上ではその建物にブックマークが表示されます。Placemark の名前はその建物の住所であり、その建物にある入居可能な部屋の賃貸情報の数が括弧の中に表示されます。ある建物での入居可能な部屋の賃貸情報 (listing) の数を取得するためには再度 address キーを使い、その listing 要素の現在の住所と同じ住所を持つ listing 要素の数をカウントします。

description 要素は Placemark の一部であり、地図上でその Placemark をクリックしたときにポップアップ表示されるバルーンの中で、その Placemark の名前の下に表示されます。description 要素の中では 2 つのことが行われています。まず、スタイルシートは作成される XML 文書の中に CDATA-START と CDATA-END を含めます。その理由は、作成される文書が Google マップに供給される KML であるためです。Google マップは description タグに HTML で記述された内容を取得し、それをそのまま Placemark にポップアップ表示されるバルーンの中に配置します (つまりこれらの HTML の内容を (XML 要素として扱わず) テキストとして扱います)。そのため description 要素の内容を CDATA 構成体の中にラップする必要がありますが、その内容をそのままスタイルシートの中に置くことはできません (置いたとしても XSLT プロセッサーはその内容を無視します)。この場合のソリューションでは CDATA の開始タグと終了タグの代わりにテキスト・マーカーを置いておき、呼び出し側の PHP コードの中で正規表現による置換を使用することによって、XSLT 変換の結果の中で実際の CDATA の開始マーカーと終了マーカーを置き換えています (リスト 7)。

個々の listing 要素を処理する

description 要素の中で行われていることの 2 つ目は <xsl:apply-templates> によって、現在の (グループ・リーダーの) listing 要素の住所と同じ住所を持つすべての listing 要素を、グループ・リーダーを含めて選択していることです。<xsl:apply-templates> はそれらの listing 要素を、listing-within-group モードで listing 要素に対して処理を行うテンプレートに渡します (リスト 7)。このテンプレートは description 要素の後に point 要素を作成し、地図上の Placemark の経度と緯度を指定します。また、そのデータを描画する上で適切であれば高度を指定することもできます。

リスト 7. Placemark の description の中で各 listing 要素の <div> 要素を作成する <xsl:template>
<xsl:template match="listing" mode="listing-within-group">
    <div>
      APT <xsl:value-of select="apt_no"/>:
      $<xsl:value-of select="rent"/>,
      <xsl:value-of select="notes"/>
    </div>
</xsl:template>

このスタイルシートの中の最後のテンプレートは listing-within-group モードで listing 要素に対して処理を行い、その物件の部屋番号、家賃、その物件に関するさまざまな補足事項を含む <div> 要素を listing 要素に対して作成します。ここには CSS のスタイル属性を含めて、任意の HTML を含めることができます。

PHP で XML データにスタイルシートを適用する

最後のステップでは、XML データに実際に XSLT スタイルシートを適用します。PHP 5 では、XSLT 変換機能を提供するために、libxslt で作成された (XSL 仕様の実装である) XSL モジュールを提供しています (「参考文献」にリンクがあります)。この XSL モジュールによって、XSL 文書を XML 文書に適用することができます (リスト 8)。

リスト 8. PHP で KML データを作成する
function doXslt($xml, $xsl) {

  $xmlDOM = DOMDocument::loadXML($xml);
  $xslDOM = DOMDocument::loadXML($xsl);

  $processor = new XSLTProcessor();
  $processor->importStyleSheet($xslDOM);

  return $processor->transformToXML($xmlDOM);
}

$xml = fetchListingsAsXml();

$xsl = file_get_contents ('listings-xml-to-kml.xsl');

$kml = doXslt($xml, $xsl);

$kml = ereg_replace('CDATA-START', '<![CDATA[', $kml);
$kml = ereg_replace('CDATA-END', ']]>', $kml);

header("content-type: application/xml");
echo $kml;

XSLTProcessor() 関数では、ソース文書とスタイルシートがストリングではなく DOMDocument オブジェクトでなければなりません。ここで doXslt() は、引数として渡される $xml ストリングと $xsl ストリングから DOMDocuments を作成し、XSLTProcessor を作成し、提供されるスタイルシートをこのプロセッサーにインポートし、そして提供される XML 文書をスタイルシートに従って変換します。また ereg_replace() を使うことで、実際の CDATA タグをスタイルシートの中に導入された CDATA-START マーカーと CDATA-END マーカーで置き換えます。content-type を application/xml に指定することで、この KML を Google マップに供給する準備が整ったことになります。

Google マップに KML のオーバーレイを表示する

Google マップに KML データをオーバーレイして表示するためには、ブラウザーで http://maps.google.com/maps?q=http://YOUR-SERVER/listings-as-kml.php?v=2 にアクセスします (YOUR-SERVER は PHP スクリプトを実行するサーバーの URL です)。Google は KML ファイルをキャッシュし、誰かがその KML データを表示するたびにサーバーがヒットされるのを回避します。強制的に表示を更新するためには、毎回変化するクエリー・パラメーターを指定する必要があります (例えば v=2 など。この数字には、Google で KML データを再取得しにいくごとに毎回異なる数を指定する必要があります)。

この URL によって、地図上にすべての Placemark が収まる倍率にまでズームされたGoogle マップのページが作成されます (図 2)。

図 2. Google マップのページに KML データが表示された様子
Google マップのページに KML データが表示された様子
Google マップのページに KML データが表示された様子

この地図の左側には、すべての Placemark を一覧にした図 3 が表示されます (Placemark の上には KML 文書の <name> と <description> が表示されています)。

図 3. Google マップの左側に表示される Placemark の一覧
Google マップの左側に表示される Placemark の一覧
Google マップの左側に表示される Placemark の一覧

地図の中で Placemark の 1 つをクリックすると、その Placemark のバルーンがポップアップ表示されます (図 4)。

図 4. ポップアップ表示された Placemark のバルーン
ポップアップ表示された Placemark のバルーン
ポップアップ表示された Placemark のバルーン

Google Maps API を使って KML のオーバーレイを表示する

KML データを、Google Maps API (JavaScript) を使って表示する地図の中にロードすることもできます (リスト 9)。

リスト 9. Google Maps API を使って KML データをオーバーレイする
function load() {
      if (GBrowserIsCompatible()) {

        var map = new GMap2(document.getElementById("map"));

        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());

        map.setCenter(new GLatLng(40.743884, -73.974666), 13);

        var kmlUrl = "http://YOUR-SERVER/listings-as-kml.php?v="
+ Math.round(Math.random() * 10000000000);

        var kml = new GGeoXml(kmlUrl);
        map.addOverlay(kml);
      }
    }

ここでは JavaScript によって KML フィードの URL を作成し、URL の末尾にランダムで大きい値の数字を付加することで、Google が新しい KML データを取得することを (ほぼ) 保証しています。またいくつかのユーティリティー関数が用意されている GGeoXml オブジェクトを使って KML データをロードし、その KML データを引数として addOverlay() を呼び出すと、ページ内の地図上に KML データが表示されます (図 5)

図 5. Google Maps API を使って KML データをオーバーレイする
Google Maps API を使って KML データをオーバーレイする
Google Maps API を使って KML データをオーバーレイする

Google Earth で KML のオーバーレイを表示する

Google Earth で KML データを表示することもできます。ローカル・コンピューターに KML データをファイルとして保存します (拡張子は .kml にします。そうしないと Google Earth はそのファイルを開くことができません)。まず、Google Earth をダウンロードしてインストールし (「参考文献」を参照)、そして「ファイル」メニューを使ってその KML ファイルを開きます (図 6)。

図 6. Google Earth にロードされた KML のオーバーレイ
Google Earth にロードされた KML のオーバーレイ
Google Earth にロードされた KML のオーバーレイ

この写真では、黄色の画鋲マークが Placemark を表しています。それらのうちの 1 つをクリックすると、Google マップでポップアップ表示されるバルーン用に提供したものと同じ HTML が表示されます。

まとめ

この 2 回シリーズの記事では、住所を地理座標に変換してデータベースに保存するために、PHP から Google のジオコーダ Web サービスを呼び出しました。次にストアード・プロシージャーを使って MySQL から XML データを作成し、XSLT スタイルシートを使ってそのデータを KML オーバーレイに変換して Google マップと Google Earth に表示しました。

ここまで来ると、無限の可能性が広がります。特に、Placemark で単にテキスト情報を表示するだけではなく KML で 3D のポリラインやポリゴンを作成できることを考えると、この 2 回の記事は実現可能なことの表面をなでたにすぎません。住所情報を扱うほとんどすべての Web サイトに Google マップと Google Earth、そして Google ジオコーダを活用することができ、また XSLT を利用することによって、座標データを含む任意の XML データを非常に目を引かれる KML オーバーレイに変換することができます。


ダウンロード可能なリソース


関連トピック

  • XSLT、KML、そして Google Maps API を使って地図上にデータをオーバーレイする: 第 1 回 Google のジオコーダ Web サービスの内部を探る」(Jake Miles 著、developerWorks、2008年8月) では、Google のジオコーダ Web サービスを使って郵便番号と住所座標を検索してデータベースに保存する方法を説明しています。また XSLT と KML を追加することで、不動産仲介業者用のサンプル・アプリケーションで地図上に位置情報をオーバーレイする方法を説明しています。
  • Erik Wetterberg による Mysql 用の賢明なストアード・プロシージャー (XML 出力コードのスニペット) を MySQL Forge から入手してください。
  • Erik Wetterberg のブログには SQL 関数から XML 出力を得る方法の例が説明されています。
  • XSLT の忍者、Jeni Tennison のサイトでは、Muenchian メソッドを使って要素リストからグループに分ける方法を学ぶことができます。
  • KML Tutorial を利用して、Google Earth や Google マップ、モバイル Google マップなどの Earth ブラウザーで位置情報データを表示するために使われるファイル・フォーマット、KML について学んでください。Google が提供するこのチュートリアルは出発点として最適です。
  • Google Maps API のサインアップ・ページで Google Maps API のキーにサインアップしてください。
  • Introducing Google's Geocoding Service」を読み、Google Maps API に追加された最新のサービスについて学んでください。このサービスを利用すると、サード・パーティーによるソリューションを使わなくてもさまざまな場所を地図に表示することができ、メーリング・アドレスを対応の座標に変換することができます。
  • Google Maps API の資料からジオコーダ・サービスのレスポンスに対するエラー・コードを見つけてください。
  • XML.org のサイトを訪れてください。このサイトでは、SOAP、WSDL、SVG などを含め、XML に関する広範な種類のスキーマや標準の情報を得ることができます。
  • XML および関連技術において IBM 認定技術者になる方法については、IBM XML certification を参照してください。
  • PHP 5 と、libxslt に基づいて作成された XSL モジュール (XSL 仕様の実装) を入手してください。この XSL モジュールを利用すると XSL 文書を XML に適用することができます。
  • Google Earth をダウンロードし、インストールしてください。Google Earth は地図と衛星写真を提供しており、複雑な地域検索やピンポイントの地域検索に活用することができます。
static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=XML, Web development, Open source
ArticleID=343374
ArticleTitle=XSLT、KML、そして Google Maps API を使って地図上にデータをオーバーレイする: 第 2 回 データを変換し、使用する
publish-date=09092008