PanoramioPanoramio Widget API:JavaScript API
- JavaScriptライブラリでPanoramioウィジェットをカスタマイズ
- リクエスト〔指定した条件の写真セットを取得〕
- 単一写真ウィジェット
- 写真リストウィジェット
- イベント〔デフォルトイベントの動作を制御〕
- 写真オブジェクト〔現在表示されている写真情報を取得〕
- 属性ブロック〔著作権表示の表示スタイルを指定〕
- 例:ウィジェット内のテキスト表示などの言語を明示〔hlパラメータ〕
- 例:指定した写真セットを表示〔set+rect併用、セット切替〕
- 例:指定したタグが付いている写真セットを表示〔tag+rect併用、タグ切替〕
- 例:指定したユーザーが撮影した写真セットを新しい順に表示〔user+order併用、順序切替〕
- 例:指定したエリア内で特定のタグが付いている写真セットを表示〔tag+rect併用、エリア切替〕
- 例:指定した写真グループの写真セットを新しい順に表示〔group+order併用、グループ切替〕
- 例:指定したユーザーの任意の写真を1枚表示〔ids使用〕
- 例:任意の写真セットを表示〔ids使用〕
- 例:クリックした写真情報を取得し、撮影場所をストリートビュー表示〔Googleマップ連動〕
JavaScriptライブラリでPanoramioウィジェットをカスタマイズ
2012/5/17
HTMLテンプレートのiframe版ではあらかじめ用意されているオプションの範囲でしかカスタマイズしかできませんが、 JavaScriptライブラリを使用すると、ウィジェットの見た目や動作を制御できます。
組み込み手順
まず、JavaScriptライブラリをhead要素内に読み込みます。
※言語を指定する場合はhlパラメータを付加します。
<script type='text/javascript' src='http://www.panoramio.com/wapi/wapi.js?v=1'></script>
次に、body要素内に、ウィジェットを表示する領域を定義し、ウィジェットを生成して表示します。
以下は、写真リストウィジェットの場合の記述例です。
<div id='wapiblock'><-- ウィジェットの表示領域 --></div> <script type='text/javascript'> /* リクエスト:取得する写真を指定 */ var myRequest = { 'tag': 'france, hotel', 'rect': { 'sw': {'lat': 42.1331639, 'lng': -5.982052000000067}, 'ne': {'lat': 50.0380022, 'lng': 10.409549999999967} } }; /* ウィジェットの見た目を指定 ※ウィジェットの種類によって異なります */ var myOptions = { 'width':340, 'height':220, 'columns': 5, 'rows':3, 'croppedPhotos':true } /* 写真リストウィジェット生成 */ var widget = new panoramio.PhotoListWidget('wapiblock', myRequest, myOptions); /* ウィジェット表示 */ /* 写真の表示開始位置を指定(先頭から) */ widget.setPosition(0); </script>
リクエスト
指定した条件の写真セットを取得
2012/5/17
var myRequest = { "tag": "france, hotel", "rect": { 'sw': {'lat': 42.1331639, 'lng': -5.982052000000067}, 'ne': {'lat': 50.0380022, 'lng': 10.409549999999967} } };
リクエストオブジェクトの値
無効なオプションを指定すると例外(panoramio.InvalidPhotoRequestError)が発生します。
名前 | 説明 |
---|---|
set |
指定した名前の写真セットを選択。
▼指定可能な値 |
tag |
指定したタグが付けられた写真を選択。 カンマ区切りで複数のタグを指定可能です。 ※その場合、タグ名にそれらの単語が両方含まれるものがヒットします。 |
user | 指定したユーザID(数値)のユーザーの写真をすべて選択。 |
group |
指定したグループID(数値)のグループにある写真をすべて選択。 →Panoramioのグループ一覧 |
ids |
指定した写真セットを選択。 写真セットには各写真(その写真の写真ID、ユーザーID)を配列で指定。 写真は配列に指定された順序に表示されます。 |
rect |
指定したエリア内にある写真を表示。 エリアは西南(sw)と北東(ne)で指定した矩形領域で、それぞれ緯度・経度を指定。 ※idsオプションとの併用不可。 |
order |
写真の表示順序を指定。 指定可能な値は、「panoramio.PhotoOrder.DATE_DESC」(新→古しい写真の順)、「panoramio.PhotoOrder.DATE」(古→新しい写真の順、デフォルト)のいずれか。 ※userオプションと併用。 ※rectオプションとの併用不可。 |
※setとtag、setとgroupの併用はできないようです。
イベント
デフォルトイベントの動作を制御
2012/5/17
ユーザーがクリックしたり、マウスを動かしたり、キーを押したり、ページに訪れた時などの、Webページ上でのイベントが受け取れます。
構文
panoramio.events.listen(ウィジェット, イベントタイプ, function(event){ /* 処理 */ });
イベントタイプ
Widget APIは、自動的にブラウザのイベントを合成イベントに変換します。
定義されているイベントは以下の通り。
デフォルトでこれらの動作は有効になっています。
イベント | 説明 |
---|---|
panoramio.events.EventType.PREVIOUS_CLICKED | ユーザーが前へ矢印をクリックした時 |
panoramio.events.EventType.NEXT_CLICKED | ユーザーが次へ矢印をクリックした時 |
panoramio.events.EventType.PHOTO_CHANGED |
Widget APIの写真の読み込みが完了した時。 前後への写真移動などでウィジェット上に表示されている写真が変更された時。 |
panoramio.events.EventType.PHOTO_CLICKED | ユーザーが写真をクリックした時 |
デフォルトの動作は一部またはすべてを無効にできます。
全て無効にする場合は、PhotoWidgetとPhotoListWidgetのオプションのdisableDefaultEventsに「false」を指定します。
⇒サンプルはこちら。
例えば、写真をクリックした時、写真ページを別ウィンドウで表示させたい場合は、デフォルト動作のPHOTO_CHANGEDだけを無効にし、独自のビヘイビアを提供します。
⇒サンプルはこちら。
設置サンプル - デフォルトイベントを有効・無効化

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Panoramio JavaScript API | 設置サンプル</title> <link rel="stylesheet" href="/content/lib/global.css" type="text/css" /> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <!-- PanoramioのJavaScript APIを読み込む --> <script type='text/javascript' src='http://www.panoramio.com/wapi/wapi.js?v=1&hl=ja'></script> <script type="text/javascript"> $(function(){ /* ウィジェットの見た目を指定 */ var myOptions1 = { "width":320, /* ウィジェットの幅(px) */ "height":220, /* ウィジェットの高さ(px) */ "croppedPhotos":true, /* 写真トリミング有効 */ "columns":4, "rows":3, "disableDefaultEvents":true /* デフォルトイベント無効化 */ } var myOptions2 = { "width":320, /* ウィジェットの幅(px) */ "height":220, /* ウィジェットの高さ(px) */ "croppedPhotos":true, /* 写真トリミング有効 */ "columns":4, "rows":3, "disableDefaultEvents":false /* デフォルトイベント無効化 */ } var myOptions3 = { "width":320, /* ウィジェットの幅(px) */ "height":220, /* ウィジェットの高さ(px) */ "croppedPhotos":true, /* 写真トリミング有効 */ "columns":4, "rows":3, "disableDefaultEvents":[ /* 一部のデフォルトイベント無効化 */ panoramio.events.EventType.PREVIOUS_CLICKED, panoramio.events.EventType.PHOTO_CLICKED ] } /* リクエストを指定 */ var myRequest = { /* エリア:フランス パリ */ "rect": {'sw': {'lat': 48.7978487, 'lng': 2.224162500000034}, 'ne': {'lat': 48.9153104, 'lng': 2.4802813000000015}}, /* タグ:'cafe' */ "tag": "restaurant" }; /* 写真リストウィジェットを生成 */ var widget1 = new panoramio.PhotoListWidget('wapiblock1', myRequest, myOptions1); var widget2 = new panoramio.PhotoListWidget('wapiblock2', myRequest, myOptions2); var widget3 = new panoramio.PhotoListWidget('wapiblock3', myRequest, myOptions3); /* ウィジェットを表示 */ /* 写真の表示開始位置を指定 */ widget1.setPosition(12); widget2.setPosition(12); widget3.setPosition(12); /* 写真がクリックされた時 */ function photoClicked(event,f) { res('写真がクリックされました "' + event.getPhoto().getPhotoTitle() + '"',f); } panoramio.events.listen(widget3, panoramio.events.EventType.PHOTO_CLICKED, function(event){ photoClicked(event,3); }); panoramio.events.listen(widget2, panoramio.events.EventType.PHOTO_CLICKED, function(event){ photoClicked(event,2); }); panoramio.events.listen(widget1, panoramio.events.EventType.PHOTO_CLICKED, function(event){ photoClicked(event,1); }); /* 前へ矢印がクリックされた時 */ function previousClicked(event,f) { res('前へ矢印がクリックされました',f); } panoramio.events.listen(widget3, panoramio.events.EventType.PREVIOUS_CLICKED, function(event){ previousClicked(event,3); }); panoramio.events.listen(widget2, panoramio.events.EventType.PREVIOUS_CLICKED, function(event){ previousClicked(event,2); }); panoramio.events.listen(widget1, panoramio.events.EventType.PREVIOUS_CLICKED, function(event){ previousClicked(event,1); }); /* 次へ矢印がクリックされた時 */ function nextClicked(event,f) { res('次へ矢印がクリックされました',f); } panoramio.events.listen(widget3, panoramio.events.EventType.NEXT_CLICKED, function(event){ nextClicked(event,3); }); panoramio.events.listen(widget2, panoramio.events.EventType.NEXT_CLICKED, function(event){ nextClicked(event,2); }); panoramio.events.listen(widget1, panoramio.events.EventType.NEXT_CLICKED, function(event){ nextClicked(event,1); }); /* 写真が変更された時 */ function photoChanged(event,f) { res("写真が変更されました",f); } panoramio.events.listen(widget3, panoramio.events.EventType.PHOTO_CHANGED, function(event){ photoChanged(event,3); }); panoramio.events.listen(widget2, panoramio.events.EventType.PHOTO_CHANGED, function(event){ photoChanged(event,2); }); panoramio.events.listen(widget1, panoramio.events.EventType.PHOTO_CHANGED, function(event){ photoChanged(event,1); }); function res(str,f){ $("#res"+f).prepend(str+"\n\n"); } }); </script> <style type="text/css"> /* ウィジェットのスタイル指定 */ #wapiblock3 .panoramio-wapi-photolist, #wapiblock2 .panoramio-wapi-photolist, #wapiblock1 .panoramio-wapi-photolist { /* 枠 */ border:1px solid #aec8e8; } #wapiblock3 .panoramio-wapi-images, #wapiblock2 .panoramio-wapi-images, #wapiblock1 .panoramio-wapi-images { /* 背景色 */ background-color: #d2e6f4 } .box { float:left; width:48%; margin:0; padding:0; } textarea { width:320px; height:100px; font-size:6px; line-height:1.2; } </style> </head> <body> <h1>設置サンプル:Panoramio JavaScript API</h1> <h2>イベント</h2> <p>デフォルトイベントを有効化・無効化、一部だけ無効化したウィジェットです。</p> <hr /> <div class="cf" style="width:700px"> <div class="box"> <h3>disableDefaultEvents:true</h3> <p>デフォルトの動作を無効化</p> <div id="wapiblock1"><!-- ウィジェットの表示領域 --></div> <textarea id="res1"></textarea> </div> <div class="box"> <h3>disableDefaultEvents:false</h3> <p>デフォルトの動作を有効化</p> <div id="wapiblock2"><!-- ウィジェットの表示領域 --></div> <textarea id="res2"></textarea> </div> </div> <hr /> <h3>disableDefaultEvents:[...]</h3> <p>デフォルトの動作の一部(前ボタン、写真クリック)を無効化<br>写真ページを別窓で開く</p> <div id="wapiblock3"><!-- ウィジェットの表示領域 --></div> <textarea id="res3"></textarea> </body> </html>
設置サンプル - 一部のデフォルトイベントを無効化
写真をクリックした時の「panoramio.events.EventType.PHOTO_CLICKED」を無効化し、写真ページを別ウィンドウで開きます。

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Panoramio JavaScript API | 設置サンプル</title> <link rel="stylesheet" href="/content/lib/global.css" type="text/css" /> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <!-- PanoramioのJavaScript APIを読み込む --> <script type='text/javascript' src='http://www.panoramio.com/wapi/wapi.js?v=1&hl=ja'></script> <script type="text/javascript"> $(function(){ /* ウィジェットの見た目を指定 */ var myOptions = { "width":320, /* ウィジェットの幅(px) */ "height":220, /* ウィジェットの高さ(px) */ "croppedPhotos":true, /* 写真トリミング有効 */ "columns":4, "rows":3, "disableDefaultEvents":[ /* 一部のデフォルトイベント無効化 */ panoramio.events.EventType.PHOTO_CLICKED ] } /* リクエストを指定 */ var myRequest = { /* エリア:フランス パリ */ "rect": {'sw': {'lat': 48.7978487, 'lng': 2.224162500000034}, 'ne': {'lat': 48.9153104, 'lng': 2.4802813000000015}}, /* タグ:'cafe' */ "tag": "restaurant" }; /* 写真リストウィジェットを生成 */ var widget = new panoramio.PhotoListWidget('wapiblock', myRequest, myOptions); /* ウィジェットを表示 */ /* 写真の表示開始位置を指定 */ widget.setPosition(0); /* 写真がクリックされた時 */ function photoClicked(event) { $("#res").prepend('写真がクリックされました "' + event.getPhoto().getPhotoUrl() + '"'+"\n\n"); //写真ページを別窓で開く window.open(event.getPhoto().getPhotoUrl()); } panoramio.events.listen(widget, panoramio.events.EventType.PHOTO_CLICKED, photoClicked); }); </script> <style type="text/css"> #wapiblock .panoramio-wapi-photolist { /* 枠 */ border:1px solid #aec8e8; } #wapiblock .panoramio-wapi-images { /* 背景色 */ background-color: #d2e6f4 } textarea { width:320px; height:100px; font-size:6px; line-height:1.2; } </style> </head> <body> <h1>設置サンプル:Panoramio JavaScript API</h1> <h2>イベント</h2> <p>写真をクリックした時の「panoramio.events.EventType.PHOTO_CLICKED」を無効化し、写真ページを別ウィンドウで開きます。</p> <hr /> <h3 class="title_camera">パリにあるカフェの写真</h3> <div id="wapiblock"><!-- ウィジェットの表示領域 --></div> <textarea id="res"></textarea> </body> </html>
写真オブジェクト
現在表示されている写真情報を取得
2012/5/17
写真オブジェクトは、Panoramioの写真に関する情報が含まれているオブジェクトです。
ウィジェットが現在表示している(単一または複数の)写真の写真情報を取得するには、 PhotoWidgetのgetPhotoメソッド、PhotoListWidgetのgetPhotosメソッドを使用します。
クリックした写真の情報も、panoramio.PhotoClickedEventで取得できます。 この合成イベントは、getPhotoメソッドを持つpanoramio.Photoオブジェクトを返します。
Photoオブジェクトのメソッド
メソッド | 説明 |
---|---|
getPhotoId | Panoramioの写真IDを返す。 |
getPhotoTitle | 写真のタイトルを返す。 |
getPhotoUrl | 写真のPanoramio写真ページのURLを返す。 |
getPosition | 写真の位置を返す(先頭は0始まり)。 |
getOwnerId | 撮影者のユーザーIDを返す。 |
getOwnerName | 撮影者の名前を返す。 |
getOwnerUrl | 写真の所有者のPanoramioのユーザーページのURLを返す。 |
getWidth | オリジナル写真の幅をピクセル単位で返す。 |
getHeight | オリジナル写真の高さをピクセル単位で返す。 |
設置サンプル - 現在表示している写真情報を取得
単一写真、写真リストウィジェットに現在表示されている写真情報を取得して表示します。
前後ボタンをクリックすると、下記の情報が変わります。
ウィジェット内には表参道で最近撮影された写真を表示しています。

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Panoramio JavaScript API | 設置サンプル</title> <link rel="stylesheet" href="/content/lib/global.css" type="text/css" /> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <!-- PanoramioのJavaScript APIを読み込む --> <script type='text/javascript' src='http://www.panoramio.com/wapi/wapi.js?v=1&hl=ja'></script> <script type="text/javascript"> $(function(){ /* ウィジェットの見た目を指定 */ var myOptions1 = { "width":320, /* ウィジェットの幅(px) */ "height":220, /* ウィジェットの高さ(px) */ "croppedPhotos":panoramio.Cropping.TO_FILL } var myOptions2 = { "width":320, /* ウィジェットの幅(px) */ "height":220, /* ウィジェットの高さ(px) */ "croppedPhotos":true, /* 写真トリミング有効 */ "columns":4, "rows":3 } /* リクエストを指定 */ var myRequest = { /* ウィジェット内には表参道で最近撮影された写真を表示 */ "set":panoramio.PhotoSet.RECENT, "rect":{'sw':{'lat':35.657386,'lng':139.70300099999997},'ne':{'lat':35.67244,'lng':139.72109899999998}} }; /* 単一写真ウィジェットを生成 */ var widget1 = new panoramio.PhotoWidget('wapiblock1', myRequest, myOptions1); /* 写真リストウィジェットを生成 */ var widget2 = new panoramio.PhotoListWidget('wapiblock2', myRequest, myOptions2); /* ウィジェットを表示 */ widget1.setPosition(0); widget2.setPosition(0); /* 表示される写真が変更された時、現在の写真情報を取得 */ function getPhotoInfo(event,n){ var s=""; if(n==1){ obj=widget1.getPhoto(); }else{ obj=widget2.getPhotos(); } console.log(obj.length); if(obj.length>0){ for(var i in obj){ var photo=obj[i]; /* 各写真情報を表示 */ s+="写真ID:"+photo.getPhotoId()+"\n"; s+="写真タイトル:"+photo.getPhotoTitle()+"\n"; s+="写真ページのURL:<a href='"+photo.getPhotoUrl()+"' target='_blank'>"+photo.getPhotoUrl()+"</a>\n"; s+="撮影された場所:"+photo.getPosition()["lat"]+", "+photo.getPosition()["lng"]+"\n"; s+="撮影者のユーザーID:"+photo.getOwnerId()+"\n"; s+="撮影者の名前:"+photo.getOwnerName()+"\n"; s+="オリジナル写真の幅:"+photo.getWidth()+"px\n"; s+="オリジナル写真の高さ:"+photo.getWidth()+"px\n"; s+="---------------------------------------------------------\n"; } }else{ /* 各写真情報を表示 */ s+="写真ID:"+obj.getPhotoId()+"\n"; s+="写真タイトル:"+obj.getPhotoTitle()+"\n"; s+="写真ページのURL:<a href='"+obj.getPhotoUrl()+"' target='_blank'>"+obj.getPhotoUrl()+"</a>\n"; s+="撮影された場所:"+obj.getPosition()["lat"]+", "+obj.getPosition()["lng"]+"\n"; s+="撮影者のユーザーID:"+obj.getOwnerId()+"\n"; s+="撮影者の名前:"+obj.getOwnerName()+"\n"; s+="オリジナル写真の幅:"+obj.getWidth()+"px\n"; s+="オリジナル写真の高さ:"+obj.getWidth()+"px\n"; s+="---------------------------------------------------------\n"; } $("#res"+n).html(s); } panoramio.events.listen(widget1, panoramio.events.EventType.PHOTO_CHANGED, function(event){ getPhotoInfo(event,1); }); panoramio.events.listen(widget2, panoramio.events.EventType.PHOTO_CHANGED, function(event){ getPhotoInfo(event,2); }); }); </script> <style type="text/css"> #wapiblock2 .panoramio-wapi-photolist, #wapiblock1 .panoramio-wapi-photolist { /* 枠 */ border:1px solid #aec8e8; } #wapiblock2 .panoramio-wapi-images, #wapiblock1 .panoramio-wapi-images { /* 背景色 */ background-color: #d2e6f4 } .box { width:320px; float:left; } .box pre { width:320px; font-size:6px; margin:0; padding:10px; line-height:1.2; } </style> </head> <body> <h1>設置サンプル:Panoramio JavaScript API</h1> <h2>写真オブジェクト</h2> <p> ウィジェットに現在表示されている写真情報を取得して表示します。<br> 前後ボタンをクリックすると、下記の情報が変わります。<br> ウィジェット内には表参道で最近撮影された写真を表示しています。 </p> <hr /> <div class="cf" style="width:700px;"> <div class="box"> <h3>単一写真ウィジェット</h3> <div id="wapiblock1"><!-- ウィジェットの表示領域 --></div> <pre id="res1"></pre> </div> <div class="box" style="float:right;"> <h3>写真リストウィジェット</h3> <div id="wapiblock2"><!-- ウィジェットの表示領域 --></div> <pre id="res2"></pre> </div> </div> </body> </html>
設置サンプル - クリックした写真情報を取得
クリックした写真の情報を表示し、撮影された場所のストリートビューを表示します。
※写真のクリックイベントはログ出力のため仮で無効にしてあります。
属性ブロック
著作権表示の表示スタイルを指定
2012/5/17
Panoramioのウィジェットには、規約上、著作権情報を表示する必要があります。 特に何もしなければ、Widget APIを使用してウィジェットを組み込むと、この著作権情報が属性ブロックとして自動的にウィジェットの下部に挿入されます。

ただ、レイアウト上、小さいウィジェットをタイル状に並べたり、単一写真+写真リストウィジェットを組み合わせて表示するといったケースの場合、各ウィジェットに属性ブロックを表示すると右図のようにおかしなことになるので、そういった場合は、ウィジェットのグループ全体に対して属性ブロックを1つだけ表示するようにできます。
属性ウィジェットの表示スタイルは、ウィジェットのattributionStyleオプションで変更できます。
var myOptions = {
"width":80,
"height":220,
"attributionStyle": panoramio.tos.Style.DEFAULT_ADD
}
スタイル | 説明 |
---|---|
panoramiio.tos.Style.DEFAULT |
ウィジェットの下部に、ウィジェットと同じ幅で属性ブロックを表示。 ウィジェット全体の高さは、属性ブロック含め、オプションに指定したウィジェットの高さになります。 ※デフォルト。 |
panoramio.tos.Style.DEFAULT_ADD |
ウィジェットの下部に、ウィジェットと同じ幅で属性ブロックを表示。 ウィジェット全体の高さは、オプションに指定したウィジェットの高さ+属性ブロックの高さになります。 |
panoramiio.tos.Style.HIDDEN | ウィジェットに属性ブロックを表示しない。 |



※HIDDENに設定した場合は、panoramio.TermsOfServiceWidgetを使用して、ウィジェットの近くに属性ブロックを表示する必要があります。
設置サンプル - attributionStyle
JavaScriptライブラリを使用して、単一写真ウィジェットを写真ウィジェットを表示するサンプルです。
写真リストの各写真をクリックすると、クリックした写真を単一写真ウィジェットを表示します。
以下は、右側の写真リストウィジェットを属性ブロックは非表示にし、左側の単一写真ウィジェットの属性ブロックのみ表示させています。

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Panoramio JavaScript API | 設置サンプル</title> <link rel="stylesheet" href="/content/lib/global.css" type="text/css" /> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <!-- PanoramioのJavaScript APIを読み込む --> <script type='text/javascript' src='http://www.panoramio.com/wapi/wapi.js?v=1&hl=ja'></script> <script type="text/javascript"> $(function(){ /* ウィジェットの見た目を指定 */ var myOptions1 = { "width":320, /* ウィジェットの幅(px) */ "height":220, /* ウィジェットの高さ(px) */ "croppedPhotos":panoramio.Cropping.TO_FILL, "attributionStyle":panoramio.tos.Style.DEFAULT /* ウィジェットの高さに属性ブロックの高さを追加 */ } var myOptions2 = { "width":80, /* ウィジェットの幅(px) */ "height":220, /* ウィジェットの高さ(px) */ "croppedPhotos":true, /* 写真トリミング有効 */ "columns":1, "rows":3, "orientation":"vertical", /* 写真リストの向き(垂直) */ "attributionStyle": panoramio.tos.Style.HIDDEN, /* 属性ブロック非表示 */ "disableDefaultEvents":[ /* 一部のデフォルトイベント無効化 */ panoramio.events.EventType.PHOTO_CLICKED ] } /* リクエスト */ var myRequest = new panoramio.PhotoRequest({ /* ウィジェット内には最近撮影された写真を表示 */ "set":panoramio.PhotoSet.RECENT }); /* 単一写真ウィジェットを生成 */ var widget1 = new panoramio.PhotoWidget('wapiblock1', myRequest, myOptions1); /* 写真リストウィジェットを生成 */ var widget2 = new panoramio.PhotoListWidget('wapiblock2', myRequest, myOptions2); /* ウィジェットを表示 */ widget1.setPosition(0); widget2.setPosition(0); /* 単一写真ウィジェットの前後ボタンを無効化 */ widget1.enablePreviousArrow(false); widget1.enableNextArrow(false); /* 写真リストの写真がクリックされた時 */ panoramio.events.listen(widget2, panoramio.events.EventType.PHOTO_CLICKED, function(event){ /* クリックされた写真を単一写真ウィジェットに表示 */ var position = event.getPosition(); if(position!==null) widget1.setPosition(position); }); }); </script> <style type="text/css"> #photobox { width:400px; overflow:hidden; } #photo { width:320px; float:left; } #photolist { width:80px; float:left; } </style> </head> <body> <h1>設置サンプル:Panoramio JavaScript API</h1> <h2>属性ブロック</h2> <p> JavaScriptライブラリを使用して、単一写真ウィジェットを写真ウィジェットを表示するサンプルです。<br> 写真リストウィジェットの属性ブロックは非表示にし、単一写真ウィジェットの属性ブロックのみ表示させています。 </p> <p> 写真リストの各写真をクリックすると、クリックした写真を単一写真ウィジェットを表示します。 単一写真ウィジェットの前後ボタンは無効化しています。 </p> <hr /> <h3 class="title_camera">Panoramioに最近アップロードされた写真</h3> <div id="photobox" class="cf"> <div id="photo"> <div id="wapiblock1"><!-- ウィジェットの表示領域 --></div> </div> <div id="photolist" style="float:right;"> <div id="wapiblock2"><!-- ウィジェットの表示領域 --></div> </div> </div> </body> </html>
設置サンプル - TermsOfServiceWidget
すべてのウィジェットの属性ブロックを非表示にし、TermsOfServiceWidgetで新たに生成した属性ブロックを表示するサンプルです。 オプションで、ブロックの幅を指定できます。
オプション | 説明 |
---|---|
width | 属性ブロックの幅をピクセル単位で指定。 |

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Panoramio JavaScript API | 設置サンプル</title> <link rel="stylesheet" href="/content/lib/global.css" type="text/css" /> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <!-- PanoramioのJavaScript APIを読み込む --> <script type='text/javascript' src='http://www.panoramio.com/wapi/wapi.js?v=1&hl=fr'></script> <script type="text/javascript"> $(function(){ /* ウィジェットの見た目を指定 */ var myOptions1 = { "width":320, /* ウィジェットの幅(px) */ "height":220, /* ウィジェットの高さ(px) */ "croppedPhotos":panoramio.Cropping.TO_FILL, "attributionStyle":panoramio.tos.Style.HIDDEN /* 属性ブロック非表示 */ } var myOptions2 = { "width":80, /* ウィジェットの幅(px) */ "height":220, /* ウィジェットの高さ(px) */ "croppedPhotos":true, /* 写真トリミング有効 */ "columns":1, "rows":3, "orientation":"vertical", /* 写真リストの向き(垂直) */ "attributionStyle": panoramio.tos.Style.HIDDEN, /* 属性ブロック非表示 */ "disableDefaultEvents":[ /* 一部のデフォルトイベント無効化 */ panoramio.events.EventType.PHOTO_CLICKED ] } /* リクエスト */ var myRequest = new panoramio.PhotoRequest({ /* ウィジェット内には最近撮影された写真を表示 */ "set":panoramio.PhotoSet.RECENT }); /* 単一写真ウィジェットを生成 */ var widget1 = new panoramio.PhotoWidget('wapiblock1', myRequest, myOptions1); /* 写真リストウィジェットを生成 */ var widget2 = new panoramio.PhotoListWidget('wapiblock2', myRequest, myOptions2); /* ウィジェットを表示 */ widget1.setPosition(0); widget2.setPosition(0); /* 単一写真ウィジェットの前後ボタンを無効化 */ widget1.enablePreviousArrow(false); widget1.enableNextArrow(false); /* 属性ブロックを表示 */ var attrOption = {'width':500}; var attrwidget = new panoramio.TermsOfServiceWidget('attrbox', attrOption); /* 写真リストの写真がクリックされた時 */ panoramio.events.listen(widget2, panoramio.events.EventType.PHOTO_CLICKED, function(event){ /* クリックされた写真を単一写真ウィジェットに表示 */ var position = event.getPosition(); if(position!==null){ widget1.setPosition(position); if(position>0){ widget2.setPosition(position-1); } } return false; }); }); </script> <style type="text/css"> #photobox { width:400px; overflow:hidden; } #photo { width:320px; float:left; } #photolist { width:80px; float:left; } </style> </head> <body> <h1>設置サンプル:Panoramio JavaScript API</h1> <h2>属性ブロック</h2> <p> JavaScriptライブラリを使用して、単一写真ウィジェットを写真ウィジェットを表示するサンプルです。<br> 写真リストウィジェット、単一写真ウィジェットの属性ブロックを非表示にし、別途属性ブロックを示させています。 </p> <p> 写真リストの各写真をクリックすると、クリックした写真を単一写真ウィジェットを表示します。<br> 単一写真ウィジェットの前後ボタンは無効化しています。 </p> <hr /> <h3 class="title_camera">Panoramioに最近投稿された写真</h3> <div id="photobox" class="cf"> <div id="photo"> <div id="wapiblock1"><!-- ウィジェットの表示領域 --></div> </div> <div id="photolist" style="float:right;"> <div id="wapiblock2"><!-- ウィジェットの表示領域 --></div> </div> </div> <div id="attrbox"><!-- 属性ブロックの表示領域 --></div> </body> </html>
例:ウィジェット内のテキスト表示などの言語を明示
hlパラメータ
2012/5/17
ウィジェット内に表示される著作権表記のテキストなどに、適用する言語を明示したい場合は、JavaScriptライブラリを読み込む際に、hlパラメータを付加します。 例えば、フランス語なら「hl=fr」、日本語なら「hl=ja」、英語なら「hl=en」。

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Panoramio JavaScript API | 設置サンプル</title> <link rel="stylesheet" href="/content/lib/global.css" type="text/css" /> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script type='text/javascript' src='http://www.panoramio.com/wapi/wapi.js?v=1&hl=ja'></script> <script type="text/javascript"> $(function(){ /* リクエスト */ var myRequest = { /* タグ指定 */ "tag": "hotel", /* エリア指定:東京都の境界((35.528873, 139.51057400000002), (35.817813, 139.91020200000003)) */ "rect": {'sw': {'lat': 35.528873, 'lng': 139.51057400000002}, 'ne': {'lat': 35.817813, 'lng': 139.91020200000003}} }; /* ウィジェットの見た目 */ var myOptions = { "width":320, "height":320, "croppedPhotos":true /* 写真のトリミング表示有効 */ } /* 単一写真ウィジェット */ var wapiblock = document.getElementById('wapiblock'); var widget = new panoramio.PhotoWidget(wapiblock, myRequest, myOptions); console.log(widget); widget.setPosition(0); }); </script> </head> <body> <h1>設置サンプル:Panoramio JavaScript API</h1> <p> Panoramiaの写真で東京都内で撮影された写真の内、「hotel」タグがつけられている写真を単一写真ウィジェットで表示します。 </p> <hr /> <h3 class="title_camera">東京都内のホテルの写真</h3> <div id="wapiblock"></div> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Panoramio JavaScript API | 設置サンプル</title> <link rel="stylesheet" href="/content/lib/global.css" type="text/css" /> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script type='text/javascript' src='http://www.panoramio.com/wapi/wapi.js?v=1&hl=fr'></script> <script type="text/javascript"> $(function(){ /* リクエスト */ var myRequest = { /* タグ指定 */ "tag": "hotel", /* エリア指定:東京都の境界((35.528873, 139.51057400000002), (35.817813, 139.91020200000003)) */ "rect": {'sw': {'lat': 35.528873, 'lng': 139.51057400000002}, 'ne': {'lat': 35.817813, 'lng': 139.91020200000003}} }; /* ウィジェットの見た目 */ var myOptions = { "width":320, "height":320, "croppedPhotos":true /* 写真のトリミング表示有効 */ } /* 単一写真ウィジェット */ var wapiblock = document.getElementById('wapiblock'); var widget = new panoramio.PhotoWidget(wapiblock, myRequest, myOptions); console.log(widget); widget.setPosition(0); }); </script> </head> <body> <h1>設置サンプル:Panoramio JavaScript API</h1> <p> Panoramiaの写真で東京都内で撮影された写真の内、「hotel」タグがつけられている写真を単一写真ウィジェットで表示します。 </p> <hr /> <h3 class="title_camera">東京都内のホテルの写真</h3> <div id="wapiblock"></div> </body> </html>
例:指定した写真セットを表示
set+rect併用、セット切替
2012/5/17
取得する写真セットを切り替え表示するサンプルです。
エリアは、フランス国内を指定しています。
var myRequest = {
"set":panoramio.PhotoSet.ALL,
"rect":{'sw':{'lat':42.1331639,'lng':-5.982052000000067},'ne':{'lat':50.0380022,'lng':10.409549999999967}}
};
▼setオプションに指定可能な値
「panoramio.PhotoSet.ALL」(すべての写真)
「panoramio.PhotoSet.PUBLIC」(Google Earth用に選択されたすべての写真)
「panoramio.PhotoSet.RECENT」(最近アップロードされた写真)

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Panoramio JavaScript API | 設置サンプル</title> <link rel="stylesheet" href="/content/lib/global.css" type="text/css" /> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script type='text/javascript' src='http://www.panoramio.com/wapi/wapi.js?v=1&hl=ja'></script> <script type="text/javascript"> $(function(){ /* ウィジェットの見た目 */ var myOptions = { "width":340, "height":220, "columns": 5, "rows":3, "croppedPhotos":true /* 写真のトリミング表示有効 */ } /* リクエスト */ var myRequest = { /* エリア指定:フランスの境界((42.1331639, -5.982052000000067), (50.0380022, 10.409549999999967)) */ "rect": {'sw': {'lat': 42.1331639, 'lng': -5.982052000000067}, 'ne': {'lat': 50.0380022, 'lng': 10.409549999999967}} }; function review(flag){ switch(flag){ case "ALL": myRequest["set"]=panoramio.PhotoSet.ALL; break; case "PUBLIC": myRequest["set"]=panoramio.PhotoSet.PUBLIC; break; case "RECENT": myRequest["set"]=panoramio.PhotoSet.RECENT; break; } /* 写真リストウィジェット */ var wapiblock = document.getElementById('wapiblock'); var widget = new panoramio.PhotoListWidget(wapiblock, myRequest, myOptions); widget.setPosition(0); } review($("input[name='set']:checked").val()); $("input[name='set']").change(function(){ review($("input[name='set']:checked").val()); }); }); </script> <style type="text/css"> #wapiblock .panoramio-wapi-photolist { /* 枠 */ border:1px solid #aec8e8; } #wapiblock .panoramio-wapi-images { /* 背景色 */ background-color: #d2e6f4 } </style> </head> <body> <h1>設置サンプル:Panoramio JavaScript API</h1> <p> Panoramiaの写真でフランス国内で撮影された写真の内、下記の条件で写真を表示します。 </p> <hr /> <form> <p> set: panoramio.PhotoSet. <label for="set_1"><input type="radio" id="set_1" name="set" value="ALL" checked />ALL</label> <label for="set_2"><input type="radio" id="set_2" name="set" value="PUBLIC" />PUBLIC</label> <label for="set_3"><input type="radio" id="set_3" name="set" value="RECENT" />RECENT</label> </p> </form> <div id="wapiblock"></div> </body> </html>
例:指定したタグが付いている写真セットを表示
tag+rect併用、タグ切替
2012/5/17
カンマ区切りで複数の単語を指定し、それらの単語が両方含まれる写真セットを表示するサンプル。
エリアは、フランス国内を指定しています。
var myRequest = {
"tag":"france,bourgogne",
"rect":{'sw':{'lat':42.1331639,'lng':-5.982052000000067},'ne':{'lat':50.0380022,'lng':10.409549999999967}}
};

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Panoramio JavaScript API | 設置サンプル</title> <link rel="stylesheet" href="/content/lib/global.css" type="text/css" /> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script type='text/javascript' src='http://www.panoramio.com/wapi/wapi.js?v=1&hl=ja'></script> <script type="text/javascript"> $(function(){ /* ウィジェットの見た目 */ var myOptions = { "width":340, "height":220, "columns": 5, "rows":3, "croppedPhotos":true /* 写真のトリミング表示有効 */ } /* リクエスト */ var myRequest = { /* エリア指定:フランスの境界((42.1331639, -5.982052000000067), (50.0380022, 10.409549999999967)) */ "rect": {'sw': {'lat': 42.1331639, 'lng': -5.982052000000067}, 'ne': {'lat': 50.0380022, 'lng': 10.409549999999967}} }; function review(flag){ myRequest["tag"]="france,"+flag; /* 写真リストウィジェット */ var wapiblock = document.getElementById('wapiblock'); var widget = new panoramio.PhotoListWidget(wapiblock, myRequest, myOptions); widget.setPosition(0); } review($("input[name='tag']:checked").val()); $("input[name='tag']").change(function(){ review($("input[name='tag']:checked").val()); }); }); </script> <style type="text/css"> #wapiblock .panoramio-wapi-photolist { /* 枠 */ border:1px solid #aec8e8; } #wapiblock .panoramio-wapi-images { /* 背景色 */ background-color: #d2e6f4 } </style> </head> <body> <h1>設置サンプル:Panoramio JavaScript API</h1> <p> Panoramiaの写真でフランス内で撮影された写真の内、下記のタグが含まれる写真を表示します。 </p> <hr /> <form> <p> tag: <label for="tag_1"><input type="radio" id="tag_1" name="tag" value="bourgogne" checked />france, bourgogne</label> <label for="tag_2"><input type="radio" id="tag_2" name="tag" value="bretagne" />france, bretagne</label> <label for="tag_3"><input type="radio" id="tag_3" name="tag" value="paris" />france, paris</label> </p> </form> <div id="wapiblock"></div> </body> </html>
例:指定したユーザーが撮影した写真セットを新しい順に表示
user+order併用、順序切替
2012/5/17
指定したユーザーの写真セットを表示し、写真の投稿日付の昇順・降順に切替表示するサンプル。
var myRequest = {
"user":788837,
"order":panoramio.PhotoOrder.DATE_DESC
};
▼orderオプションに指定可能な値
「panoramio.PhotoOrder.DATE_DESC」(新→古しい写真の順)
「panoramio.PhotoOrder.DATE」(古→新しい写真の順、デフォルト)

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Panoramio JavaScript API | 設置サンプル</title> <link rel="stylesheet" href="/content/lib/global.css" type="text/css" /> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script type='text/javascript' src='http://www.panoramio.com/wapi/wapi.js?v=1&hl=ja'></script> <script type="text/javascript"> $(function(){ /* ウィジェットの見た目 */ var myOptions = { "width":330, "height":220, "columns": 3, "rows":2, "croppedPhotos":true /* 写真のトリミング表示有効 */ } /* リクエスト */ var myRequest = { "user":6901390 }; function review(flag){ switch(flag){ case "DATE_DESC": myRequest["order"]=panoramio.PhotoOrder.DATE_DESC; break; case "DATE": myRequest["order"]=panoramio.PhotoOrder.DATE; break; } /* 写真リストウィジェット */ var wapiblock = document.getElementById('wapiblock'); var widget = new panoramio.PhotoListWidget(wapiblock, myRequest, myOptions); widget.setPosition(0); } review($("input[name='order']:checked").val()); $("input[name='order']").change(function(){ review($("input[name='order']:checked").val()); }); }); </script> <style type="text/css"> #wapiblock .panoramio-wapi-photolist { /* 枠 */ border:1px solid #aec8e8; } #wapiblock .panoramio-wapi-images { /* 背景色 */ background-color: #d2e6f4 } </style> </head> <body> <h1>設置サンプル:Panoramio JavaScript API</h1> <p> 指定したユーザーの写真セットを表示し、写真の投稿日付の昇順・降順に切り替え表示します。 </p> <hr /> <h3 class="title_camera"><a href="http://www.panoramio.com/user/6901390" target="_blank">cocoism</a> の写真</h3> <form> <p> order: <label for="order_1"><input type="radio" id="order_1" name="order" value="DATE" checked />DATE(古→新)</label> <label for="order_2"><input type="radio" id="order_2" name="order" value="DATE_DESC" />DATE_DESC(新→古)</label> </p> </form> <div id="wapiblock"></div> </body> </html>
例:指定したエリア内で特定のタグが付いている写真セットを表示
tag+rect併用、エリア切替
2012/5/17
各首都で撮影された写真の中から「hotel」のタグがつけられている写真を表示するサンプル。
var myRequest = { "tag":"hotel", "rect":{'sw':{'lat':48.7978487,'lng':2.224162500000034},'ne':{'lat':48.9153104,'lng':2.4802813000000015}}, };

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Panoramio JavaScript API | 設置サンプル</title> <link rel="stylesheet" href="/content/lib/global.css" type="text/css" /> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script type='text/javascript' src='http://www.panoramio.com/wapi/wapi.js?v=1&hl=ja'></script> <script type="text/javascript"> $(function(){ var rect_ary={ "paris": {'sw': {'lat': 48.7978487, 'lng': 2.224162500000034}, 'ne': {'lat': 48.9153104, 'lng': 2.4802813000000015}}, "roma": {'sw': {'lat': 41.65587379999999, 'lng': 12.234426600000006}, 'ne': {'lat': 42.140959, 'lng': 12.855864099999962}}, "madrid": {'sw': {'lat': 41.65587379999999, 'lng': 12.234426600000006}, 'ne': {'lat': 42.140959, 'lng': 12.855864099999962}} } /* ウィジェットの見た目 */ var myOptions = { "width":340, "height":220, "columns": 5, "rows":3, "croppedPhotos":true /* 写真のトリミング表示有効 */ } /* リクエスト */ var myRequest = { "tag":"hotel" }; function review(flag){ myRequest["rect"]=rect_ary[flag]; /* 写真リストウィジェット */ var wapiblock = document.getElementById('wapiblock'); var widget = new panoramio.PhotoListWidget(wapiblock, myRequest, myOptions); widget.setPosition(0); } review($("input[name='rect']:checked").val()); $("input[name='rect']").change(function(){ review($("input[name='rect']:checked").val()); }); }); </script> <style type="text/css"> #wapiblock .panoramio-wapi-photolist { /* 枠 */ border:1px solid #aec8e8; } #wapiblock .panoramio-wapi-images { /* 背景色 */ background-color: #d2e6f4 } </style> </head> <body> <h1>設置サンプル:Panoramio JavaScript API</h1> <p> 各首都で撮影された写真の中から「hotel」のタグがつけられている写真を表示します。 </p> <hr /> <form> <p> rect: <label for="rect_1"><input type="radio" id="rect_1" name="rect" value="paris" checked />フランス パリ</label> <label for="rect_2"><input type="radio" id="rect_2" name="rect" value="roma" />イタリア ローマ</label> <label for="rect_3"><input type="radio" id="rect_3" name="rect" value="madrid" />スペイン マドリード</label> </p> </form> <div id="wapiblock"></div> </body> </html>
例:指定した写真グループの写真セットを新しい順に表示
group+order併用、グループ切替
2012/5/17
指定したPanoramioの写真グループにある写真を新しい順に表示するサンプル。
var myRequest = {
"group":6095,
"rect":{'sw':{'lat':48.7978487,'lng':2.224162500000034},'ne':{'lat':48.9153104,'lng':2.4802813000000015}},
};

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Panoramio JavaScript API | 設置サンプル</title> <link rel="stylesheet" href="/content/lib/global.css" type="text/css" /> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script type='text/javascript' src='http://www.panoramio.com/wapi/wapi.js?v=1&hl=ja'></script> <script type="text/javascript"> $(function(){ /* ウィジェットの見た目 */ var myOptions = { "width":340, "height":220, "columns": 5, "rows":3, "croppedPhotos":panoramio.Cropping.TO_FILL /* 写真のトリミング */ } /* リクエスト */ var myRequest = { "order":panoramio.PhotoOrder.DATE_DESC /* 新→古い写真順 */ }; function review(flag){ myRequest["group"]=flag; /* 写真リストウィジェット */ var wapiblock = document.getElementById('wapiblock'); var widget = new panoramio.PhotoListWidget(wapiblock, myRequest, myOptions); widget.setPosition(0); } review($("input[name='grp']:checked").val()); $("input[name='grp']").change(function(){ review($("input[name='grp']:checked").val()); }); }); </script> <style type="text/css"> #wapiblock .panoramio-wapi-photolist { /* 枠 */ border:1px solid #aec8e8; } #wapiblock .panoramio-wapi-images { /* 背景色 */ background-color: #d2e6f4 } </style> </head> <body> <h1>設置サンプル:Panoramio JavaScript API</h1> <p> 選択したPanoramioの写真グループにある写真を新しい順に表示します。 </p> <hr /> <form> <p> group: <label for="grp_1"><input type="radio" id="grp_1" name="grp" value="6095" checked />Panoramas</label> <label for="grp_2"><input type="radio" id="grp_2" name="grp" value="8334" />colors of life</label> <label for="grp_3"><input type="radio" id="grp_3" name="grp" value="8186" />Nature Is Beautiful</label> </p> </form> <div id="wapiblock"></div> </body> </html>
例:指定したユーザーの任意の写真を1枚表示
ids使用
2012/5/17
指定した写真ID+ユーザーIDの写真を1枚だけ表示するサンプル。
「cocoism」さんが撮影した「TOKYO SKYTREE」の写真を表示しています。
なおcroppedPhotosには「panoramio.Cropping.TO_FILL」を指定し、画像を領域いっぱいに表示してトリミングしています。 トリミングされる形はウィジェットのサイズに依存します。
写真は1枚しか表示しないので、ウィジェットの前後矢印は非表示にしてあります。

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>指定したユーザーの任意の写真を1枚表示 | Panoramio JavaScript API | 設置サンプル</title> <link rel="stylesheet" href="/content/lib/global.css" type="text/css" /> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script type='text/javascript' src='http://www.panoramio.com/wapi/wapi.js?v=1&hl=ja'></script> <script type="text/javascript"> $(function(){ /* ウィジェットの見た目 */ var myOptions = { "width":360, "height":360, "columns": 6, "rows":2, "croppedPhotos":panoramio.Cropping.TO_FILL } /* リクエスト */ var myRequest = { "ids":[ {'photoId': 74254755, 'userId': 6901390} ] }; /* 写真リストウィジェット */ var widget = new panoramio.PhotoWidget('wapiblock', myRequest, myOptions); widget.setPosition(0); widget.enablePreviousArrow(false); /* 前へ矢印非表示 */ widget.enableNextArrow(false); /* 次へ矢印非表示 */ }); </script> <style type="text/css"> #wapiblock .panoramio-wapi-photolist { /* 枠 */ border:1px solid #aec8e8; } #wapiblock .panoramio-wapi-images { /* 背景色 */ background-color: #d2e6f4 } </style> </head> <body> <h1>設置サンプル:Panoramio JavaScript API</h1> <p>指定したユーザーの任意の写真を1枚表示するサンプル。ここでは「cocoism」さんが撮影した「TOKYO SKYTREE」の写真を表示しています。</p> <hr /> <h3 class="title_camera">TOKYO SKYTREE</h3> <div id="wapiblock"></div> </body> </html>
例:任意の写真セットを表示
ids使用
2012/5/17
指定した写真ID+ユーザーIDの写真セットを表示するサンプル。
写真の順番は、写真セットに指定した順になります。orederオプションでの並び替えはできません。
以下では、Panoramioの写真の中から「パリの凱旋門」の写真を集めて表示してみました。
なおcroppedPhotosには「panoramio.Cropping.TO_FILL」を指定し、画像を領域いっぱいに表示してトリミングしています。 トリミングされる形はウィジェットのサイズに依存します。

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Panoramio JavaScript API | 設置サンプル</title> <link rel="stylesheet" href="/content/lib/global.css" type="text/css" /> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script type='text/javascript' src='http://www.panoramio.com/wapi/wapi.js?v=1&hl=ja'></script> <script type="text/javascript"> $(function(){ /* ウィジェットの見た目 */ var myOptions = { "width":360, "height":220, "columns": 6, "rows":2, "croppedPhotos":panoramio.Cropping.TO_FILL } /* リクエスト */ var myRequest = { "ids":[ {'photoId': 16365869, 'userId': 1662714}, {'photoId': 30149354, 'userId': 3968724}, {'photoId': 59723765, 'userId': 341731}, {'photoId': 61955771, 'userId': 1850516}, {'photoId': 29049775, 'userId': 2341793}, {'photoId': 60984787, 'userId': 4272273}, {'photoId': 53880245, 'userId': 4208745}, {'photoId': 547292, 'userId': 116341}, {'photoId': 2330395, 'userId': 101009}, {'photoId': 43182870, 'userId': 2972027}, {'photoId': 20789715, 'userId': 873463}, {'photoId': 1558077, 'userId': 78506}, {'photoId': 6495866, 'userId': 1081020}, {'photoId': 4743304, 'userId': 799809}, {'photoId': 7812842, 'userId': 151365}, {'photoId': 57679492, 'userId': 3452687}, {'photoId': 60984787, 'userId': 4272273}, {'photoId': 1558077, 'userId': 78506} ] }; /* 写真リストウィジェット */ var widget = new panoramio.PhotoListWidget('wapiblock', myRequest, myOptions); widget.setPosition(0); }); </script> <style type="text/css"> #wapiblock .panoramio-wapi-photolist { /* 枠 */ border:1px solid #aec8e8; } #wapiblock .panoramio-wapi-images { /* 背景色 */ background-color: #d2e6f4 } </style> </head> <body> <h1>設置サンプル:Panoramio JavaScript API</h1> <p>任意に指定した写真セットを表示するサンプル。ここではパリの凱旋門の写真を集めてみました。</p> <hr /> <h3 class="title_camera">パリの凱旋門の写真</h3> <div id="wapiblock"></div> </body> </html>
例:クリックした写真情報を取得し、撮影場所をストリートビュー表示
Googleマップ連動
2012/5/17
クリックした写真の情報を表示し、撮影された場所のストリートビューを表示します。
※写真のクリックイベントはログ出力のため仮で無効にしてあります。

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Panoramio JavaScript API | 設置サンプル</title> <link rel="stylesheet" href="/content/lib/global.css" type="text/css" /> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <!-- PanoramioのJavaScript APIを読み込む --> <script type='text/javascript' src='http://www.panoramio.com/wapi/wapi.js?v=1&hl=ja'></script> <!-- Google Maps APIの読み込み --> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script> <script type="text/javascript"> $(function(){ /* ウィジェットの見た目を指定 */ var myOptions = { "width":320, /* ウィジェットの幅(px) */ "height":220, /* ウィジェットの高さ(px) */ "croppedPhotos":true, /* 写真トリミング有効 */ "columns":4, "rows":3, "disableDefaultEvents":[ /* 一部のデフォルトイベント無効化 */ panoramio.events.EventType.PHOTO_CLICKED ] } /* リクエストを指定 */ var myRequest = { "rect": {'sw': {'lat': 35.657386, 'lng': 139.70300099999997}, 'ne': {'lat': 35.67244, 'lng': 139.72109899999998}} }; /* 写真リストウィジェットを生成 */ var widget = new panoramio.PhotoListWidget('wapiblock', myRequest, myOptions); /* ウィジェットを表示 */ /* 写真の表示開始位置を指定 */ widget.setPosition(0); /* 写真がクリックされた時 */ function photoClicked(event) { /* クリックされた写真情報を表示 */ var s=""; s+="写真ID:"+event.getPhoto().getPhotoUrl()+"\n"; s+="写真タイトル:"+event.getPhoto().getPhotoTitle()+"\n"; s+="写真ページのURL:"+event.getPhoto().getPhotoUrl()+"\n"; s+="撮影された場所:"+event.getPhoto().getPosition()["lat"]+", "+event.getPhoto().getPosition()["lng"]+"\n"; s+="撮影者のユーザーID:"+event.getPhoto().getOwnerId()+"\n"; s+="撮影者の名前:"+event.getPhoto().getOwnerName()+"\n"; s+="オリジナル写真の幅:"+event.getPhoto().getWidth()+"px\n"; s+="オリジナル写真の高さ:"+event.getPhoto().getWidth()+"px\n"; lat=event.getPhoto().getPosition()["lat"]; lng=event.getPhoto().getPosition()["lng"]; initialize(); $("#res").val(s); } panoramio.events.listen(widget, panoramio.events.EventType.PHOTO_CLICKED, photoClicked); }); /* クリックした写真の位置のストリートビューを表示 */ var map,svp,lat=35.6652470,lng=139.7123140; /* デフォルトは表参道の緯度・経度 */ function initialize() { var latlng=new google.maps.LatLng(lat,lng); var obj=document.getElementById("mapcanvas"); var myOptions = { zoom: 18, center:latlng, mapTypeId: google.maps.MapTypeId.ROADMAP }; map=new google.maps.Map(obj, myOptions); svp=new google.maps.StreetViewPanorama( obj,{ position:map.getCenter() }); map.setStreetView(svp); } google.maps.event.addDomListener(window, 'load', initialize); </script> <style type="text/css"> #wapiblock .panoramio-wapi-photolist { /* 枠 */ border:1px solid #aec8e8; } #wapiblock .panoramio-wapi-images { /* 背景色 */ background-color: #d2e6f4 } #wapiblock { width:320px; float:left; } #mapcanvas { width:270px; height:202px; background:#eee; border:1px solid #ccc; float:right; } textarea { width:600px; height:120px; font-size:6px; margin:0; padding:0; line-height:1.2; } </style> </head> <body> <h1>設置サンプル:Panoramio JavaScript API</h1> <h2>写真オブジェクト</h2> <p> クリックした写真の情報を表示し、撮影された場所のストリートビューを表示します。<br> ※写真のクリックイベントはログ出力のため仮で無効にしてあります。 </p> <hr /> <h3 class="title_camera">表参道駅周辺の写真</h3> <div class="cf" style="width:600px;"> <div id="wapiblock"><!-- ウィジェットの表示領域 --></div> <div id="mapcanvas"><!-- Googleマップ表示領域 --></div> </div> <textarea id="res"></textarea> </body> </html>