Google マップのストリートビューでは、 道路単位の 360 度画像。世界中のランドマークを探索したり、自然の中を眺めたりできます 旅行の案内をしたり、お店の外観を見せたりすることができます。
概要
Google ストリートビューは、指定された道路から 360 度のパノラマビューを提供する
そのカバレッジエリア全体で
スケーリングされますSDK を通じて利用できるカバレッジは、
iOS 向け Google マップ アプリの場合と同じです。または
https://maps.google.com/
。詳しくは、
ストリートビューを表示し、対応地域をインタラクティブな地図で確認できます。
ストリートビューについて
Maps SDK for iOS にはストリートビュー サービスがあります
をご覧ください。
ストリートビュー画像はパノラマとして返され、
ストリートビュー ビューア内から見ることができます。
GMSPanoramaView
型のオブジェクト。
ストリートビュー パノラマ
各ストリートビュー パノラマは、単一地点からの 360 度ビューを提供する 1 枚の画像または画像のセットです。画像は正距円筒図法に準拠 (Plate Carrée)図法では、360 度の水平ビュー( 180 度の垂直ビュー(真上から真上まで) 真下)。結果の 360 度パノラマ画像は投影を定義します。 その 2 次元表面に画像がラップされた状態で、 球体です。
ストリートビュー パノラマは、GMSPanoramaView
オブジェクトで表示できます。この
オブジェクトは、パノラマ画像を球体としてレンダリングするビューアを提供します。
カメラの中心に来るようにします。画面の向きをプログラムで制御して、
カメラのほか、ビューアをカスタマイズするプロパティも用意されています。
ストリートビューのデータへのアクセス
ストリートビューのパノラマ画像は、2 つのメタデータのどちらかで特定することができます。
panoramaID
- ストリートビュー パノラマの一意の ID。この
panoramaID
時間の経過とともに変更される可能性があるため、長期的な用途には適していません。 ご覧ください。panoramaID
は、別のストリートビュー画像にプログラムからアクセスする際に使用するのが最適です。 coordinate
- この画像の正確な位置。
CLLocationCoordinate2D
。coordinate
を使用する目的: パノラマ位置の永続ストレージや、ユーザーの操作を ストリートビューの画像に変換します。
panoramaID
と coordinate
の両方が、
GMSPanorama
オブジェクト。coordinate
または panoramaID
を使用して、GMSPanoramaService
から GMSPanorama
をリクエストできます。「
結果として得られるオブジェクトには、メタデータの両方の部分と、
付近のパノラマへのリンクが表示されます。
パノラマの位置を設定する
ストリートビュー パノラマの位置は、 指定します。
moveNearCoordinate
メソッドは、 指定します。moveNearCoordinate:radius
メソッドと似ていますが、 座標を中心とした検索半径をメートル単位で指定できます。moveNearCoordinate:source
メソッドを使用すると、ソースを指定できます。 source は、ストリートビューを特定の場所のみに 撮影できます。デフォルトでは、場所のパノラマは次のいずれかです。 内部でも外部でもかまいませんなお、この地域では屋外のパノラマが存在しない場合があります。 表示されます。moveNearCoordinate:radius:source
メソッドを使用すると、両方の Pod を 追加しています
ストリートビュー画像の表示
ストリートビュー ビューアを追加する
ビューアを追加するための基本的なステップは次のとおりです。
- (1 回のみ)スタートガイドの手順に沿って SDK を入手します。 キーを取得して必要なフレームワークを追加します。
ViewController
を作成または更新します。パノラマを表示する場合 このビュー コントローラが表示されます。作成する際は、loadView
メソッドを使用します。- 次のコマンドを使用して、
GMSPanoramaView
クラスを作成してインスタンス化します。GMSPanoramaView
initWithFrame:
メソッド。このフィールドを ビュー コントローラの唯一のビューである場合は、CGRectZero
を地図の 地図のサイズが自動的に調整されます。 GMSPanoramaView
オブジェクトをビュー コントローラのビューとして設定します。次に例を示します。self.view = panoView;
。moveNearCoordinate:
などのメソッドを使用して、ストリートビュー画像の位置を設定します。
次の例では、アプリにストリートビュー ビューアを追加しています。
Swift
import GoogleMaps class StreetView: UIViewController { override func loadView() { let panoView = GMSPanoramaView(frame: .zero) self.view = panoView panoView.moveNearCoordinate(CLLocationCoordinate2D(latitude: -33.732, longitude: 150.312)) } }
Objective-C
#import "StreetView.h" @import GoogleMaps; @interface StreetView () @end @implementation StreetView - (void)loadView { GMSPanoramaView *panoView = [[GMSPanoramaView alloc] initWithFrame:CGRectZero]; self.view = panoView; [panoView moveNearCoordinate:CLLocationCoordinate2DMake(-33.732, 150.312)]; } @end
ビューアをカスタマイズする
利用できる操作を制限して、ビューアをカスタマイズできます。方法
デフォルトでは、パン、ズーム、隣接するパノラマへの移動はすべて有効になっています。
個々の操作は GMSPanoramaView
のプロパティで制御されます。
ユーザーの操作を有効化、無効化することができます。操作を無効にした場合でも、プログラムによる変更は可能です。
orientationGestures
- タップまたはタップでカメラの向きを変更できるかどうか
ドラッグします。
NO
に設定すると、画面の向きの変更が無効になります。 カメラ。 zoomGestures
- ユーザーがピンチ操作によりズームできるかどうかを決定します。
NO
に設定 ズームを無効にします。 navigationGestures
- 表示するパノラマをユーザーが変更できるかどうか。ユーザー
ナビゲーション リンクを 1 回タップするか、ビューをダブルタップして変更できます
パノラマ ナビゲーションの変更を無効にするには、
NO
に設定します。
[
setAllGesturesEnabled:
メソッドを使用します。
Swift
panoView.setAllGesturesEnabled(false)
Objective-C
[panoView setAllGesturesEnabled:NO];
URL スキームを使用したストリートビューの起動
Google ストリートビューの画像は、iOS 向け Google マップ内で表示できます
説明します。iOS 向け Google マップ アプリを街頭で起動できます。
mapmode
を設定して、comgooglemaps
URL スキームで表示モードにする
パラメータを streetview
に設定します。ストリートビューを起動する URL の例
が下に表示されます。詳しくは、URL スキームをご覧ください。
ご覧ください
comgooglemaps://?center=46.414382,10.013988&mapmode=streetview
ストリートビューの場所と視点(POV)
GMSPanoramaCamera
を使用すると、ストリートビューの視点を設定できます
方向、ピッチ、ズームの組み合わせとして指定できます。
次のスニペットは、カメラの方向を南向きにし、わずかに下を向けています。
Swift
panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
Objective-C
panoView.camera = [GMSPanoramaCamera cameraWithHeading:180 pitch:-10 zoom:1];
向き
ストリートビューの場所は、被写体のカメラのフォーカスの位置を定義します。
その画像に対するカメラの向きは定義されません。
向きを指定するには、GMSOrientation
オブジェクトで次の 2 つのプロパティを指定します。
heading
は、真北を基準としたカメラの回転角を度単位で指定します。見出しは時計回りに測定されます。 真北が 0、東が 90、南が 180、西が 270 です。pitch
(デフォルトは0
)は「上」の角度分散を定義します。「down」や取得 カメラの初期デフォルト ピッチ。多くの場合(常にではありません)平坦 あります(たとえば、山で撮影された画像は、 水平ではないデフォルトのピッチで表示されます)。ピッチ角は 正の値の場合は、真上から +90 度まで、 デフォルトのピッチ)、負の値(下向き)は -90 度です。 (デフォルトのピッチと直角に真下に)
ズーム
ストリートビューでは、ズームを使用してさまざまなレベルの細かさの画像に切り替えることができます。ズームレベルは、プログラムで設定することも、ユーザーがビューアをピンチして変更することもできます。
カメラの移動
GMSPanoramaView
を作成して、カメラが設定されているかデフォルトのカメラにすると、いくつかの方法でカメラを変更できます。[
その結果としてカメラの移動にアニメーションを付けることができます。「
アニメーションが、現在のカメラ属性と新しいカメラ属性の間で
設定します。
GMSPanoramaCamera
オブジェクトを変更し、
GMSPanoramaView
の camera
プロパティ。次の例では、アニメーションなしでカメラを新しい視点にスナップしています。GMSCameraPosition
を作成して構成できます。
画面の向きとズームの任意の組み合わせを使用できます。
Swift
panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
Objective-C
panoView.camera = [GMSPanoramaCamera cameraWithHeading:180 pitch:-10 zoom:1];
画面遷移をアニメーション化するには、
GMSPanoramaView
の animateToCamera:animationDuration:
メソッド。
さらに、Core Animation を使ってカメラをコントロールすることもできます。これは、
GMSPanoramaView
のカスタム CALayer
を通じて利用可能になり、
GMSPanoramaLayer
。
ストリートビュー内のマーカー
GMSPanoramaView
オブジェクトでは、地図上のマーカーを表示できます。こちらの
同じ GMSMarker
オブジェクトを GMSMapView
または
GMSPanoramaView
オブジェクトに対応するプロパティを次のように設定します。
Swift
// Create a marker at the Eiffel Tower let position = CLLocationCoordinate2D(latitude: 48.858, longitude: 2.294) let marker = GMSMarker(position: position) // Add the marker to a GMSPanoramaView object named panoView marker.panoramaView = panoView // Add the marker to a GMSMapView object named mapView marker.map = mapView
Objective-C
// Create a marker at the Eiffel Tower CLLocationCoordinate2D position = CLLocationCoordinate2DMake(48.858,2.294); GMSMarker *marker = [GMSMarker markerWithPosition:position]; // Add the marker to a GMSPanoramaView object named panoView marker.panoramaView = panoView; // Add the marker to a GMSMapView object named mapView marker.map = mapView;
マーカーのサイズは、マーカーとマーカー間の距離の
位置と GMSCameraView
の場所を指定します。この距離が長すぎると
完了すると、マーカーが小さすぎて表示できなくなるため、
表示されます。
panoramaView
プロパティを nil
に設定すると、GMSPanoramaView
から削除されます。
Swift
marker.panoramaView = nil
Objective-C
marker.panoramaView = nil;
イベント
ストリートビュー パノラマで発生したイベント(
ユーザーがパノラマをタップします。イベントをリッスンするには、
GMSPanoramaViewDelegate
プロトコル。イベントの総合ガイドと GMSPanoramaViewDelegate
のメソッドの一覧をご覧ください。