以上で完了です。

開発を始めるには、デベロッパー ドキュメント をご覧下さい。

Google Maps SDK for iOS をアクティベートする

まず初めに Google Developers Console で次の作業を行います。

  1. プロジェクトを作成または選択する
  2. Google Maps SDK for iOS をアクティベートする
  3. 適切なキーを作成する
続ける

ストリートビュー

Google マップのストリートビューを使用すると、世界中の場所の 360 度のストリート レベルの画像を表示することができます。 世界中の有名スポットを探検したり、自然の神秘を堪能することができ、旅行のナビゲーションや職場の外観の表示も可能です。

概要

Google ストリートビューは、対象地域全体について、指定した道路からの 360 度のパノラマビューを提供します。 SDK の対象地域は、Google Maps for iOS アプリhttps://maps.google.com/ の対象地域と同じです。

ストリート ビューの詳細や、インタラクティブ マップでサポートされる地域については、ストリートビューの仕組みを知る をご覧ください。

Google Maps SDK for iOS には、Google マップ ストリートビューで使用される画像を取得および操作するためのストリート ビュー サービスが用意されています。 ストリートビューの画像はパノラマ画像として返され、GMSPanoramaView 型のオブジェクトであるストリートビュー ビューア内に表示されます。—

ストリートビューのパノラマ画像

各ストリートビューのパノラマ画像は、1 枚の画像、または単一地点からの 360 度ビューを提供する画像のセットです。 画像は正距円筒図法(Plate Carrée 図法)に準拠し、360 度の水平ビュー(周囲全体)と 180 度の垂直ビュー(真上から真下)を含みます。

生成される 360 度パノラマ画像は、球体の 2 次元表面を包む画像により、その球体に対する投影を定義します。

ストリートビューのパノラマ画像は、GMSPanoramaView オブジェクトで参照できます。 このオブジェクトでは、パノラマ画像を球体としてレンダリングするビューアの中央にカメラがあります。

カメラの方向や、ビューアをカスタマイズするいくつかのプロパティはプログラムで制御できます。

ストリートビューのデータへのアクセス

ストリートビューのパノラマ画像は、2 つのメタデータのどちらかで特定することができます。

panoramaID
ストリートビューのパノラマ画像の一意な ID です。 この panoramaID は、 将来的に変わる可能性があるため、長期間にわたって参照する場合やハード コーディングを行う場合には適しません。 panoramaID は、別のストリートビュー画像にプログラムからアクセスする際に使用するのが最適です。 注: Innerspace パノラマや Photo Sphere パノラマは、現時点ではサポートされていません。
coordinate
CLLocationCoordinate2D で表現したこの画像の正確な位置です。 coordinate は、パノラマの場所を永続的に保存する場合や、マップ上でのユーザーのアクションをストリートビュー画像に変換する場合に使用します。

panoramaIDcoordinate は、どちらも GMSPanorama オブジェクトのプロパティに格納されています。 GMSPanorama は、GMSPanoramaServicecoordinatepanoramaID を使用してリクエストできます。 返されるオブジェクトには、両方のメタデータと周辺のパノラマ画像へのリンクが格納された配列が含まれます。

ストリートビュー画像の表示

ストリートビュー ビューアの追加

ビューアを追加するための基本的なステップは次のとおりです。

  1. (1 回だけ) はじめにで説明するステップに従って、SDK を取得し、キーを取得して、必要なフレームワークを追加します。

  2. ViewController を作成または更新します。 このビュー コントローラを表示する際にパノラマを表示する場合は、loadView メソッドの中でパノラマを作成するようにします。

  3. GMSPanoramaViewinitWithFrame: メソッドによって GMSPanoramaView クラスを作成してインスタンス化します。 ビュー コントローラ上に配置するビューがこれだけである場合は、マップの frame に CGRectZero を指定することができます。その場合、マップは自動的にサイズが調整されます。—

  4. ビュー コントローラのビューに GMSPanoramaView オブジェクトを設定します。たとえば、次のようにします。 self.view = panoView;

  5. moveNearCoordinate: などのメソッドを使用してストリートビュー画像の位置を設定します。

次の例では、アプリにストリートビュー ビューアを追加しています。

Swift

import UIKit
import GoogleMaps

class ViewController:UIViewController, GMSMapViewDelegate {

  override func loadView() {
    let panoView = GMSPanoramaView(frame: .zero)
    self.view = panoView

    panoView.moveNearCoordinate(CLLocationCoordinate2D(latitude: -33.732, longitude:150.312))
  }
}

Objective-C

#import "ViewController.h"
@import GoogleMaps;

@implementation ViewController

- (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
ユーザーが表示するパノラマを変更できるかどうかを決定します。 ユーザーは、ナビゲーション リンクのシングルタップまたはビューのダブルタップでパノラマを変更できます。NO を設定すると、ナビゲーションの変更を無効にします。

setAllGesturesEnabled: メソッドを使用すると、すべての操作をまとめて有効化または無効化できます。

[panoView_ setAllGesturesEnabled:NO];

URL スキームによるストリートビューの起動

Google ストリートビュー画像は、Google Maps for iOS アプリケーションで表示できます。 mapmode パラメータを streetview に設定して comgooglemaps URL スキームを使用すると、Google Maps for iOS アプリケーションをストリートビュー モードで起動できます。

ストリートビューを起動する URL の例を次に示します。 詳細については、URL スキームのドキュメントを参照してください。

comgooglemaps://?center=46.414382,10.013988&mapmode=streetview

ストリートビューの位置情報と視点(POV)

GMSPanoramaCamera を使用すると、向首方向、ピッチ、ズームの組み合わせを使用してストリートビューのカメラの視点を設定できます。

次のスニペットは、カメラの方向を南向きにし、わずかに下を向けています。

Swift

let panoView = GMSPanoramaView(frame: .zero)
panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)

Objective-C

GMSPanoramaView *panoView = [[GMSPanoramaView alloc] initWithFrame:CGRectZero];
panoView_.camera = [GMSPanoramaCamera cameraWithHeading:180
                                                  pitch:-10
                                                   zoom:1];

方向

ストリートビューでの位置情報は、どの画像にカメラを向けるかを定義しますが、その画像でのカメラの向きは定義しません。

カメラの方向を定義するには、GMSOrientation オブジェクトの次の 2 つのプロパティを使用します。

  • heading: 真北を基準としたカメラの回転角(向首方向)を度単位で指定します。 向首方向は、時計回りで計測します。 真北が 0、東が 90、南が 180、西が 270 です。
  • pitch(デフォルト 0): カメラの初期デフォルト ピッチ(通常は水平ですが、常にそうであるとは限りません)からの上下の角度の変化を指定します

(たとえば、山で撮影された画像は、水平ではないデフォルトの初期ピッチで表示される場合があります)。 ピッチ角度は、見上げる方向を正の値(デフォルトのピッチと直行する真上方向が +90 度)で、下を向く方向を負の値(デフォルトのピッチと直交する真下の方向が -90 度)として計測します。

ズーム

ストリートビューでは、ズームを使用してさまざまなレベルの細かさの画像に切り替えることができます。 ズームレベルは、プログラムで設定することも、ユーザーがビューアをピンチして変更することもできます。

カメラの移動

GMSPanoramaView を作成して一度設定を行うかデフォルトのカメラにすると、いくつかの方法によって変更を行えるようになります。 カメラを変更する場合、任意で、カメラの移動にアニメーションを付けることができます。 アニメーションによって、現在のカメラ属性から新しいカメラ属性にスムーズに表示が切り替わります。

GMSPanoramaCamera オブジェクトを変更して、GMSPanoramaViewcamera プロパティに設定することもできます。 次の例では、アニメーションなしでカメラを新しい視点にスナップしています。 任意の方向とズームの組み合わせを指定して GMSCameraPosition を作成し、それを設定することもできます。

Swift

let panoView = GMSPanoramaView(frame: .zero)
panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)

Objective-C

GMSPanoramaView *panoView = [[GMSPanoramaView alloc] initWithFrame:CGRectZero];
panoView.camera = [GMSPanoramaCamera cameraWithHeading:180 pitch:-10 zoom:1];

GMSPanoramaViewanimateToCamera:animationDuration: メソッドを呼び出して、アニメーションによる遷移を行うこともできます。

さらに、Core Animation でカメラを制御することもできます。 これは、GMSPanoramaView 上のカスタムの CALayer である GMSPanoramaLayer を使って実現できます。

ストリートビューのマーカー

GMSPanoramaView オブジェクトには、マップのマーカーを表示することができます。 対応するプロパティを設定すると、GMSMapView オブジェクトと GMSPanoramaView オブジェクトの両方で同じ GMSMarker オブジェクトを使用することができます。

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 の位置との間の距離によって決まります。 この距離が離れすぎると、マーカーは小さくなりすぎてビューに表示されなくなります。

注: GMSPanoramaView では使用できないマーカーの機能もあります。

panoramaView プロパティを nil に設定すると、GMSPanoramaView からマーカーを消去できます。

Swift

marker.panoramaView = nil

Objective-C

marker.panoramaView = nil;

イベント

ストリートビューのパノラマで発生するイベントは、リッスンすることができます。イベントは、たとえばユーザーがパノラマをタップすることなどで発生します。 イベントをリッスンするには、GMSPanoramaViewDelegate プロトコルを実装します。 詳しくは、イベントの総合ガイドGMSPanoramaViewDelegate のメソッドの一覧をご覧ください。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。