Google Earthのコンテンツでリッチな表現を

第2回 プレイスマーク整理術

この記事を読むのに必要な時間:およそ 7 分

コンテンツを非表示にするフォルダの設定

コンテンツはすべてが表示されている姿が良いわけではありません。時には,コンテンツの多さが逆に利用者にとって不便をもたらします。とくにツリー状で管理する都合上,あまりに大量のコンテンツの場合には,1つのフォルダを1つのコンテンツとして扱ったほうが都合が良い場合もしばしばあります。これはGoogle Earth上でも簡単に設定できるものではありますが,タグについても理解しておくと後々便利です。それでは,実際にいくつかのコンテンツを1つのフォルダに入れ,コンテンツを非表示にした例を見てみることにしましょう。

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.2">
<Document>
  <Folder>
    <name>隠しフォルダ</name>
    <open>1</open>
    <Style>
      <ListStyle>
        <listItemType>checkHideChildren</listItemType>
        <bgColor>00ffffff</bgColor>
      </ListStyle>
    </Style>
    <Placemark>
      <name>渋谷駅</name>
      <Point>
        <coordinates>139.7023000573202,35.65781328069085,0</coordinates>
      </Point>
    </Placemark>
    <Placemark>
      <name>テストパス</name>
      <LineString>
        <tessellate>1</tessellate>
        <coordinates>
139.7006464329127,35.65871845410054,0 139.7017395889934,35.6588309535274,0 139.7026112459783,35.65740413872246,0 139.7035380753046,35.65758712935635,0 </coordinates>
      </LineString>
    </Placemark>
    <Placemark>
      <name>テストポリゴン</name>
      <Polygon>
        <extrude>1</extrude>
        <tessellate>1</tessellate>
        <altitudeMode>relativeToGround</altitudeMode>
        <outerBoundaryIs>
          <LinearRing>
            <coordinates>
139.7008640844367,35.65810184520592,99.99999999999999 139.7009208399258,35.65731706000773,99.99999999999999 139.7018203729816,35.65769644469624,99.99999999999999 139.7008640844367,35.65810184520592,99.99999999999999 </coordinates>
          </LinearRing>
        </outerBoundaryIs>
      </Polygon>
    </Placemark>
  </Folder>
</Document>
</kml>

上記の例は,プレイスマークやパス,ポリゴンの基本データをフォルダに入れてコンテンツを隠した状態です。これまでと同様に,<Style>以下の孫要素である<listItemType>の設定を,今度はcheckHideChildrenに設定するだけで,</Folder>までの間のコンテンツが対象になります。隠すといってもソースを見れば一目瞭然なので,たとえばゲームブック的な謎解きコンテンツを作る場合のネタバレを防ぐ目的には使えません。

余談ですが,そういったコンテンツをつくる場合にはKMLのみでの実現は難しいため,Flashを利用して正しい解答をすると次のシーンへのKMLを生成するプログラムを作成するか,もしくは次に紹介するリージョン設定とネットワークリンク,PHP + MySQLなどを組み合わせ,ある領域に入ってから更新をかけ,合致するデータがDBにあればPHPがKMLを生成して答えを返すといったテクニックが必要です。

非常に小技ですが,このあと紹介いたします「フォルダアイコンをカスタマイズする」をこれに応用することで,一見するとただのプレイスマーク,けれど実は隠しフォルダといった偽装を行うことで,コンテンツ隠しを高度化も可能です。

図3 隠しフォルダを開いてみた

図3 隠しフォルダを開いてみた

プレイスマークの管理 - Regionタグを使う

プレイスマークを整理するにあたり,高度で,標準装備されているレイヤでも用いられている機能がRegionタグです。また,現在Google Earth上で簡単に作ることもできないため,厳格なタグの理解が求められる管理手法となります。

Regionタグは複数の子・孫要素を持っており,パラメータの指定にも一定のルールが存在しています。Regionタグを使えば,標準装備のレイヤのように,高度によってプレイスマークの表示・非表示を管理することが可能となったり,また,指定範囲ないに入った時にだけ,プレイスマークを表示・非表示にすることが可能となります。まずは,領域外になると消えるプレイスマークのサンプルKMLを見てみましょう。

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.2">
<Document>
  <name>region_test</name>
  <open>1</open>
  <Region>
    <LatLonAltBox>
      <north>36.25</north>
      <south>34.86</south>
      <east>140.97</east>
      <west>139.02</west>
      <minAltitude>3000</minAltitude>
      <maxAltitude>5000</maxAltitude>
    </LatLonAltBox>
    <Lod>
      <minLodPixels>0</minLodPixels>
      <maxLodPixels>-1</maxLodPixels>
      <minFadeExtent>0</minFadeExtent>
      <maxFadeExtent>0</maxFadeExtent>
    </Lod>
  </Region>
  <Placemark>
    <name>消えるプレイスマーク</name>
    <LookAt>
      <longitude>174.9732008811258</longitude>
      <latitude>45.1890724369413</latitude>
      <altitude>0</altitude>
      <range>2440959.427760235</range>
      <tilt>0</tilt>
      <heading>21.2361722005395</heading>
      <altitudeMode>relativeToGround</altitudeMode>
    </LookAt>
    <Point>
      <coordinates>175.4996537251636,39.10150546779765,0</coordinates>
    </Point>
  </Placemark>
</Document>
</kml>

このサンプルは,<Region>でリージョン設定を施し,同一レベル(フォルダ内や,<Document>内)のコンテンツに影響を与えているものです。プレイスマーク自体はこの領域よりも外側に配置されています。

領域は<LatLonAltBox>の中の四隅のポイントがそれで,この領域がGoogle Earthの画面外へフレームアウトすると,プレイスマークが消滅します。通常は,リージョンで設定した領域内にコンテンツを配置するわけなのですが,領域外であっても同一フォルダ内では影響があります。これを利用して,プレイスマークの表示非表示をコントロールするわけです。また,同一フォルダや<Document>タグ内であれば,その効果が影響を受けるので,それを利用して,<Document>タグを区切りとし,いくつものプレイスマークを同一レベルでありながら,違うリージョン管理を施すことも可能です。

著者プロフィール

郡司裕之(ぐんじひろゆき)

Google Earthを主に取り扱っているウェブサイト「GE Maniacs」の管理人。過去に2冊のGoogle Earthに関する書籍を執筆。一つはGoogle Earth全般の操作に関する書籍,もう一つはKML / COM APIのKMLに関する書籍のKML部分を担当。

無類の地図好きで,夢のツールGoogle Earthを普通に使うに飽きたらず,道具として,また新しい技術習得の土台としての利用を試みている毎日。

URLhttp://virtual.haru.gs/