使ってみよう! Bing API/SDK

第10回 使ってみよう! Bing Maps REST Services(2)

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

メタデータの取得

次はメタデータの取得です。Bing Mapsの地図は256x256ピクセルの画像をタイル状に並べて構成されています。Imagery APIを利用すると,そのタイル構成などの情報が得られます。指定した経緯度とズームレベルの地点を含むタイル画像のURLが取得可能で,主にこのために利用すると考えてよいでしょう。

URLの書式

メタデータ取得のURL書式には次の通りです。

  • http://dev.virtualearth.net/REST/version/Imagery/Metadata/imagerySet/centerPoint?
      orientation=orientation&
      zoomLevel=zoomLevel&
      include=ImageryProviders&
      key=BingMapsKey

そして,各パラメーターは次の通りです。

パラメーター(省略名) 説明
imagerySet 地図の種類
  • Aerial:航空写真
  • AerialWithLabels:航空写真に道路地図を表示した地図
  • Road:道路地図
  • Birdseye:概観図
  • BirdseyeWithLabels:道路地図を表示した概観図
centerPoint 緯度と経度をカンマ区切りで指定
orientation(incl) 視点を0~360度の実数で指定
0:北, 90:東, 180:南, 270:西
概観図を指定した場合に有効
include(dir) 値ImageryProvidersのみ設定可能
指定した場合,メタデータにタイル画像の提供元が含まれます。
zoomLevel(zl) ズームレベル

メタデータの取得では,Bird's eyeと呼ばれる概観図の情報も取得可能です。その場合,imagerySetパラメーターには,BirdseyeまたはBirdseyeWithLabelsを指定します。

経緯度とズームレベルは省略可能で,その場合は指定した地図の種類に関する情報が得られます。ただし,概観図は必ず経緯度・ズームレベルの指定が必要です。そのため,経緯度・ズームレベルを指定しないパターンは,imagerySetパラメーターにAerialAerialWithLabelsRoadのいずれかを指定した3パターンのみです。

メタデータの取得例

実際にメタデータを取得してみましょう。特定の場所を指定しない場合は次のようになります。この例はAerial(航空写真)を指定した場合です。

航空写真のメタデータ
  • http://dev.virtualearth.net/REST/v1/Imagery/Metadata/Aerial?
      key=BingMapsKey&o=xml

リクエスト結果をみる※1

※1

リクエストURLには実際のBing Maps Keyが指定してありますが,実際のアプリケーションでは必ず開発者自身が取得したKeyに置き換えてください。

次は経緯度を指定した場合です。

指定した経緯度が含まれるタイル画像情報
  • http://dev.virtualearth.net/REST/v1/Imagery/Metadata/Aerial/35.689184611,139.691633583?
      zoomLevel=19&
      key=BingMapsKey&o=xml

リクエスト結果をみる

次は地図の種類に概観図を指定した場合です。

概観図のタイル画像情報
  • http://dev.virtualearth.net/REST/v1/Imagery/Metadata/Birdseye/35.689184611,139.691633583?
      orientation=90&
      zoomLevel=19&
      key=BingMapsKey&o=xml

リクエスト結果をみる

リクエスト結果の各値については,次のレスポンス内容で説明します。

レスポンス内容

画像取得のレスポンス

画像の取得の場合,レスポンスはJPEG・PNG・GIF形式のいずれかの画像となります。これらの形式の選択はできません。Bing Maps Keyやパラメーターの誤りはHTTPのステータスコードで判断するしかありません(具体的なパラメーターの誤りはわかりません⁠⁠。

メタデータ取得のレスポンス

メタデータ取得の場合,XMLまたはJSON形式でレスポンスが返ってきます。レスポンス内容の構造はBing Maps REST Servicesで共通になっています。共通の構造は前回の内容を参照してください。ここではメタデータ特有の部分の内容を説明します(<Resources>要素以下の内容⁠⁠。

メタデータの取得で得られるJSON・XML形式の内容は次のような内容になっています。

航空写真のメタデータ

JSON

{
    "__type": "ImageryMetadata:http://schemas.microsoft.com/search/local/ws/rest/v1", 
    "imageHeight": 256, 
    "imageUrl": "http://{subdomain}.tiles.virtualearth.net/tiles/a{quadkey}.jpeg?g=580&mkt={culture}&token={token}", 
    "imageUrlSubdomains": [
        "t0", 
        "t1", 
        "t2", 
        "t3"
    ], 
    "imageWidth": 256, 
    "imageryProviders": null, 
    "vintageEnd": null, 
    "vintageStart": null, 
    "zoomMax": 19, 
    "zoomMin": 1
}

XML

<ImageryMetadata>
        <ImageUrl>http://{subdomain}.tiles.virtualearth.net/tiles/a{quadkey}.jpeg?g=580&mkt={culture}&token={token}</ImageUrl>
        <ImageUrlSubdomains>
                <string>t0</string>
                <string>t1</string>
                <string>t2</string>
                <string>t3</string>
        </ImageUrlSubdomains>
        <ImageWidth>256</ImageWidth>
        <ImageHeight>256</ImageHeight>
        <ZoomMin>1</ZoomMin>
        <ZoomMax>19</ZoomMax>
</ImageryMetadata>
指定した経緯度が含まれるタイル画像情報

JSON

{
    "__type": "ImageryMetadata:http://schemas.microsoft.com/search/local/ws/rest/v1", 
    "imageHeight": 256, 
    "imageUrl": "http://t0.tiles.virtualearth.net/tiles/a1330021123012310220.jpeg?g=580&mkt={culture}&token={token}", 
    "imageUrlSubdomains": null, 
    "imageWidth": 256, 
    "imageryProviders": null, 
    "vintageEnd": "05 Apr 2007 GMT", 
    "vintageStart": "05 Apr 2007 GMT", 
    "zoomMax": 19, 
    "zoomMin": 19
}

XML

<ImageryMetadata>
        <ImageUrl>http://t0.tiles.virtualearth.net/tiles/a1330021123012310220.jpeg?g=580&mkt={culture}&token={token}</ImageUrl>
        <ImageWidth>256</ImageWidth>
        <ImageHeight>256</ImageHeight>
        <ZoomMin>19</ZoomMin>
        <ZoomMax>19</ZoomMax>
        <VintageStart>2007-04-05</VintageStart>
        <VintageEnd>2007-04-05</VintageEnd>
</ImageryMetadata>

各要素の内容は以下の通りです。XMLとJSON形式では大文字小文字などが異なりますが,適宜読み替えてください。

要素名 説明
ImageUrl タイル画像のURLの書式
imageUrlSubdomains タイル画像URLのサブドメインの値
ImageWidth タイル画像の横幅(ピクセル)
ImageHeight タイル画像の縦幅(ピクセル)
VintageStart タイル画像の登録日
VintageEnd タイル画像の最新の更新日
ZoomMin 利用可能な最小のズームレベル
ZoomMax 利用可能な最大のズームレベル

次の要素は概観図にのみ含まれる内容です。

要素名 説明
Orientation 視点(0~360度)
TilesX 水平方向のタイル数
TilesY 垂直方向のタイル数

次に,メタデータのこれらの値を使用してタイル画像のURLを求めてみましょう。

著者プロフィール

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

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

URL:http://katamari.jp