R42日記スマートフォン用の表示で見るスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。読者です読者をやめる読者になる読者になるR42日記この日記は私的なものであり、所属会社の見解ではありません。takahashikzn2015-06-17ストリートビューで最も近いマーカーへ向く方法GoogleMapsAPI近頃はお仕事でGoogleMapAPIを触ってます。いやー、これだけ高機能な地図アプリケーションを、たったの数十行のコードで実現できるなんて素晴らしいですね。Google恐るべし。ストリートビューを開いた時の向きを自動的に最適化するさて、デフォルトではストリートビューを開いた時の方角は固定です。デフォルト値は以下の通り変更できるのですが、だからどうしたという感じです。真北を0として時計回り180度まで。真下は-90、真上は90});今回は地図上の最寄りのマーカへ自動的に向いて欲しいという要求があるので、以下の通りにしました。第二引数の要素のうち、第一引数に最も近いものを返す。});});ここで重要なのは次の2点です。位置情報計算用のユーティリティ関数を使えこの2つの関数を用いることで、面倒な計算が一発でできます。google.maps.geometry.spherical.computeHeadingA→Bの向きを計算するgoogle.maps.geometry.spherical.computeDistanceBetweenA→Bの距離を計算する同等品を自前で書くのはメンドクサイので、大いに助かりました。ところで、この関数はオプションライブラリ扱いです。URLにlibraries=geometryを付ける必要があるのでご注意を。StreetViewPanoramaのposition_changedイベントを使えmousemoveイベントはペグマンのドラッグ時には発生しないので使えません。するかというと、StreetViewPanoramaのposition_changedイベントを使います。イベントオブジェクトにはLatLngオブジェクトが設定されていないので、StreetViewPanorama.getPosition()でペグマンの位置を取得する必要があります。『ストリートビューを開く前に1度行えば充分ならば、visible_changedイベントでいいんじゃね?』という話もありますが、ペグマンの向きも動的に変えたいのでposition_changedの方が望ましいと思います。一度ストリートビューを開かないとposition_changedが発火しないみたいです。サンプルコードにある通り、ストリートビューを強制的にON→OFFしています。