Home > WEB | javascript > ストリートビューと地図の連携

ストリートビューと地図の連携

前回は、自動で下北をぐるぐる歩き回らせるのを作りましたが、
今回はストリートビューを自分でマウスで移動させて、地図のほうの位置を変更させるという、
まさに、本家でやれ!なものを作って見ました。
自動でウロウロに比べたら簡単。
動きは本家と変わらないですが、しいて言うならキャラクタが向き変えるところでしょうか。

前回の自動でウロウロと、今回の自分でウロウロ組み合わせると、
ストリートビュー鬼ごっこゲームができそうですね。

↓今回はストリートビューのほうをマウスで操作

ストリートビューの角度の変更イベントが yawchanged
位置の変更イベントが initialized で得られます。
それに応じて、キャラクターの向きと、地図の位置を変更してやっています。

ソースコード全部

JAVASCRIPT:
  1. var lastPanoId = null;         // 最後にいた場所のPanoID
  2. var nowLatLng;
  3. var map;
  4. var streetViewClient;
  5. var streetPanorama;
  6.  
  7. // GoogleMapsの初期化
  8. function initMap(lat, lng){
  9.    map = new GMap2(document.getElementById("map"));
  10.    map.disableDragging();
  11.    var ctrlObj = new GMapTypeControl();
  12.    var pos = new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(5, 15));
  13.    map.addControl(ctrlObj, pos);
  14.    map.setCenter(new GLatLng(lat, lng), 18);
  15.    initPanorama(lat, lng);
  16. }
  17.  
  18. function initPanorama(lat, lng){
  19.     streetViewClient = new GStreetviewClient;
  20.     streetPanorama = new GStreetviewPanorama(document.getElementById("pano"));
  21.     nowLatLng = new GLatLng(lat, lng);
  22.     streetViewClient.getNearestPanoramaLatLng(nowLatLng, function(latlng){
  23.         if(latlng == null){
  24.             document.getElementById("pano").style.display = "none";
  25.             return;
  26.         }
  27.         nowLatLng = latlng;
  28.         streetPanorama.setLocationAndPOV(nowLatLng, {yaw: 180, pitch: 0, zoom: -1});
  29.  
  30.         GEvent.addListener(streetPanorama,
  31.                            "yawchanged",
  32.                            function(yaw){
  33.                                changeYaw(yaw);
  34.                            });
  35.  
  36.         GEvent.addListener(streetPanorama,
  37.                            "initialized",
  38.                            function(location){
  39.                                panoramaInitialized(location);
  40.                            });
  41.  
  42.  
  43.     })
  44. }
  45.  
  46. function changeYaw(yaw){
  47.     var gifFile;
  48.     if( yaw> 360 ) yaw -= 360;
  49.     if( yaw>= 315 || yaw <45  ) gifFile = "/common/image/ue.gif";
  50.     else if( yaw>= 45 && yaw < 135 ) gifFile = "/common/image/migi.gif";
  51.     else if( yaw>= 135 && yaw < 225 ) gifFile = "/common/image/shita.gif";
  52.     else if( yaw>= 225 || yaw <315 ) gifFile = "/common/image/hidari.gif";
  53.     document.getElementById("girl").innerHTML = '<img src="'+ gifFile +'" alt="gial"/>';
  54. }
  55.  
  56. function panoramaInitialized(location){
  57.     map.panTo(location.latlng);
  58. }

そういえば、私事ですが、結婚パーティーではここでも書いた、
ビンゴの景品のクジ用のAirアプリを無事プロジェクターで動作させることができました。

ものを作って人に喜んでもらうのは、本当にうれしいですね。

ライブのほうも無事(?)成功しました。
レポートはバンドのホームページのほうに、書こうかなと思います。

ところで、前から開発合宿みたいなものを一度してみたかったんですが、
今度それが叶いそうです。

2泊3日で、どんなものができるのか、このBlogでもレポートしていきたいと思います。8/22~24 の予定。

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://parpue.net/web/249/trackback
Listed below are links to weblogs that reference
ストリートビューと地図の連携 from parpue.net

Home > WEB | javascript > ストリートビューと地図の連携

リンク
chocolataste-planner
millon

サーチ
Feeds
Meta
blog ranking ブログランキング・にほんブログ村へ
にほんブログ村 テクノラティのお気に入りに追加する

Return to page top