2020年3月18日水曜日

Publish API を使ってマルチレベルツアーを作成

異なる階層の写真を複数重ねると、それらの間を垂直に移動することが可能になります。PCのGoogleマップでは画面右側コンパスの上に表示されます。Androidのマップでは画面左下に表示されます。ストリートビュー・アプリには表示されません。
立岩展望台2F の写真です。RFをクリックすると屋上に移動します。

従来、これはサードパーティツールを使用しないと実現出来ないと言われていましたが、Publish APIを使用すれば可能です。API Explorerを使用すればAPIキーは不要で、フォームにパラメータを記入するだけです。使用するのはMethod: photo.updateです。

事前準備として、約5m範囲内に重ねる写真を配置してください。SVAのマップで建物表記の枠内に配置しないと実現出来ないみたいです。写真は各階層に1枚あれば充分で、写真間の結合は不要です。次に各写真のphotoIdを調べてください。

updateMaskは"pose.level"、Request bodyには青い+マークをクリックしながら、下記の様な記入を行います。表示されるリストから選びながら、実際のキー入力はRFと2だけです。"number"は0が地上階で、上層階がプラス、地下はマイナスです。整数以外でも構いません。"name"は3文字以内で、画面に表示されるラベルです。記入が終わったらEXECUTEをクリックします。OAuthのアカウント確認後に実行されます。必要な階層分実施します。実行してもすぐには表示されませんので、数日お待ちください。


2020年3月3日火曜日

Publish API のlistで拒否された写真を確認

Publish API のMethod: photos.listで拒否された写真を確認してみました。
"photoId"に該当"photoId"はありませんが、隣接写真の"connections"の"target"には拒否された"photoId"が残っていました。これを見ると写真が承認されれば結合も回復するようです。筑紫耶馬渓の写真が拒否から承認に戻った時に、何もせずに数日待つと結合が回復したのを確認しているので、結合作業のやり直しは不要みたいです。



elevator widget

elevator widget
マルチレベルツアーの仕組み SVTPで投稿を見つけたのでリンクをメモ。
最初の方しか読んでないけど、publish API試行する時に参考になるかも。

stack overflow: How to publish multilevel shoot using Street view publish API
※ 5m以内に異なるレベルの写真がある場合にのみ表示されます。





2020年3月2日月曜日

Publish API を使うためにphotoIdとplaceIdを得る方法

Publish APIを使うには"placeId"と"photoId"が必要です。

(1)先ずは"placeId"の取得方法です。
JavaScriptを使える方は「POI Click Events」にサンプルがあるのでご覧ください。

下記の方法でも"plaseId"を得ることが出来ます。
1.「自分の投稿」から「写真」のサムネイル一覧で場所名をクリックしてください。

2.アドレスバーの「place」の後ろに"placeId"があります。

(2)次に"photoId"の取得方法です。
JavaScriptを使える方は「Street View Events」に参考になるサンプルがあるのでご覧ください。

下記の方法でも"photoId"を得ることが出来ます。
1.「自分の投稿(Your contributions)」からサムネイルをクリックしてください。
2.タイトルカードのメニュー「」から「画像を共有または埋め込む」をクリックします。
3.「地図を埋め込む」をクリックします。
4.「HTMLをコピー」します。

5.HTMLコードの"!1s"と"!2m"の間に"photoId"が有ります。

得られた"photoId"は下記のURLに追記すると画像が表示されます。(参照)
https://www.google.com/maps/@?api=1&map_action=pano&pano=


2020年2月29日土曜日

Method: photos.batchUpdateを使ってまとめてアップデート

Method: photos.batchUpdateを使うとまとめてアップデート可能です。photo.updateを続けて複数書くような感じです。途中までやってみたら、下記の様に青い+マークをクリックしながら記入して行けば良いみたいです。一度に出来るのは20枚(?)までとの事。SVAで、すべて選択の時も20枚までにしなきゃダメなのかも。

アップデートするものが無いので、さわりだけです。
batchUpdate

Method: photo.updateを使ってplace変更

Method: photo.updateを使ってplaceを変更してみました。photoId, placeId, 場所名が必要です。updateMaskはplaces, Request bodyにはplaceId、名前、言語コードを記入します。下記の様に入力後、EXECUTEです。
updateで場所(リスティング)の変更
以前に二か所に登録された時期が有りましたが、そのまま残しておいた写真のデータをgetしてみると、下記の様になってました。"places"と複数形になっているので、本来は複数個所登録出来る仕様なのかも知れません。同様に入力したら今も二重登録可能かも。
場所が二重に登録された例

Method: photo.updateを使って結合(connections)

Method: photo.updateを使って結合(connections)してみました。シンプルに2枚の写真を互いに結合してみます。必要なのは各々のphotoIdで、updateMaskにはconnectionsを指定します。事前に結合した写真のデータを参考のためにgetしておくと分かり易いです。Request bodyのblue "add" circleをクリックして行き、idは結合相手のphotoIdを記入します。EXECUTEしたら、もう1枚の写真も同様に処理します。終わったら、Method: photos.listで確認すると結合されていることが分かります。但し、マップ上に反映されるまで時間が掛かります。あれ、これを書きながらマップを確認して見たらもう接続されてました。SVA使うよりも早いのかな、単にサーバーが暇だっただけかも。

Request bodyは下記の様な内容だけ書けばOK!
実際にやってみる方が簡単です。 Try this API
多分Method: photos.batchUpdateを使えば一度に出来るのかも。


{
  "connections": [
     {
        "target": {
          "id": "CAoSLEFGMVFpcE・・中略・・WHd1cVJRUjBk"
        }
      }
  ]
}