使ってみよう! Windows Live SDK/API

第5回 Virtual Earth,VECollection and GeoRSS

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

GeoRSSの表示

作成したサービスをVirtual Earth Map Controlからインポートしましょう。ここで注意点ですが,これから作成するマップを表示するページもWCFサービスも同じドメイン上にある必要があります。またInternet Explorerではローカルコンピュータ上のスクリプト実行に制限があり,通常ではGeoRSSのXMLデータにアクセスできません。http://localhostのアドレスでアクセスできるようにするなど工夫が必要になります。

環境さえできれば後は簡単です。コレクションの表示のときに使用したコードを変更します。VEShapeSourceSpecificationオブジェクトの生成時にVEDataType.GeoRSSとGUIDの代わりにGeoRSSサービスへのURLを指定します。

function pageLoaded() {
    map = new VEMap("myMap");
    map.LoadMap();
    
    var layer = new VEShapeLayer();
    var spec = new VEShapeSourceSpecification(VEDataType.GeoRSS, 'http://localhost/weather/georss/', layer);
    map.ImportShapeLayerData(spec, onFeedLoaded, true);
}

onFeedLoaded関数の中でプッシュピンの画像の代わりに,天気を示す画像を表示する処理を記述します。説明の中に画像のURLを含めるようにしていたので,その部分を切り出します。画像を変更するためにSetCustomIconメソッドを使用しています。

function onFeedLoaded(layer) {
    for (var i = 0; i < layer.GetShapeCount(); ++i) {
        var s = layer.GetShapeByIndex(i);
        var desc = s.GetDescription();
        var url = desc.match(/http:\/\/.*/); // 説明に含まれているURLを取得
        s.SetDescription(desc.replace(url, ''));
        s.SetCustomIcon('<img src="' + url + '" />');
    }
}

実行した結果は図5のようになります。うまくできたでしょうか? 以上で今回の内容は終了です。GeoRSSと同様にKMLと呼ばれるXML形式のデータもインポートができます。そちらについても是非試してみてください。

図5 GeoRSSのインポート

図5 GeoRSSのインポート

著者プロフィール

松江祐輔(まつえゆうすけ)

日本システムウエア株式会社 勤務。現在,ハードウェア設計・検証業務を担当。大学生・大学院生時代はベンチャー企業 有限会社ミレニアムシステムズにプログラマーとして従事。趣味はプログラミング。好きな言語はVisual Basic。Microsoft MVP for Windows Live Platform(Jul 2010 - Jun 2011),Windows Live(Jul 2011 - Jun 2013)。

URL:http://katamari.jp