F.Ko-Jiの「一秒後は未来」

jQueryでホットペッパーのAPIをリクエストしてGoogle ストリートビューを表示するまで

梅酒.inの「梅酒がウリな飲食店」にてLightBoxを実現していることを前回説明しました。今回はさらに、jQueryでホットペッパーのAPIをリクエストしてGoogle ストリートビューを表示させる方法を説明をします。

jquery-google-maps-street-view-api.png

↑ こんな感じ。(昼間の写真なのがちょっとあれですが)

ここではjQueryを用いているので、レスポンスのフォーマットとしてJSONPが利用できるホットペッパーのAPIを利用しています。

なお、jQueryのリファレンスは「jQuery 1.2.6 日本語リファレンス」が詳しいです。また、jQueryでJSONPを使う方法は「jQuery で JSONP 2通り – てっく煮ブログ」にて紹介されていたので、そちらを参考にやってみました。

また、ストリートビューをGoogle Maps APIから使う方法は「Google Maps API – Google Code (日本語)」と「MT22のメモ帳 » GStreetviewClient の使用例」に説明されています。

以下のサンプルでは、店舗のIDをキーとして取得したデータから緯度・経度を抽出して、それをもとに id=”streetview” の要素にストリートビューを表示させています。

$.ajax({
  // APIのフロントエンド
  url: 'http://webservice.recruit.co.jp/hotpepper/gourmet/v1/',
  // JSONPを使う場合の指定
  dataType: 'jsonp',
  data: {
    key: '[リクルートWEBサービスのキー]',
    id: '[店舗のID]',
    format: 'jsonp'
  },
  // レスポンスが返ってきたときの処理
  success: function(json) {
    var shop = json.results.shop[0];
    var client = new GStreetviewClient();
    var latLng = new GLatLng(shop.lat, shop.lng);
    client.getNearestPanorama(latLng, function(res) {
      if (res.code == 200) {
        var panorama = new GStreetviewPanorama(document.getElementById('streetview'), {
          latlng: res.location.latlng,
          pov: res.location.pov
        });
      }
    });
  },
  error: function() {
  }
});

まあこれだけなのですが、このような処理をlightbox生成後の処理に入れてあげると、lightboxの中にストリートビューを表示といったことができます。

このように、レスポンスをJSONPで返してくれるAPIであれば、jQueryを利用して簡単にデータを取得することができて便利です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

著者について

fkoji

F.Ko-Ji

Webエンジニアやってます。最近は ドットインストール の開発がお仕事です。その傍ら、個人で Meity電車遅延なう梅酒.in#グラドル自画撮り部 の部室といったネットサービスを開発・運営してます。梅酒と草野球とリアル脱出ゲームが好きです。

» 詳しいプロフィールや運営サービスの一覧など