この概要では、Maps SDK for iOS を使用して iOS アプリに追加された地図を構成する方法について説明します。
概要
アプリに地図を追加したら、地図の初期オプションとランタイム設定を構成できます。地図コンテナの追加の詳細については、地図を追加するをご覧ください。
地図の初期設定には、以下の設定が含まれます。
- カメラの位置(場所、ズーム、方角、傾斜を含む)。カメラの配置について詳しくは、カメラとビューをご覧ください。
- 地図の背景色。
- 地図タイプ。
- 表示するUI コンポーネント(ズームボタンやコンパスなど)。
- 有効にする操作。
これらの設定とその他の設定は、実行時に GMSMapView
オブジェクトを更新することで構成できます。
地図のオプション
地図ビューを初期化するときに、構成オプションは GMSMapViewOptions
で設定されます。オプション プロパティには、frame
、camera
、mapID
、backgroundColor
があります。
地図のオプション | |
---|---|
フレーム | 値:
CGRect 地図フレーム。デフォルトは CGRectZero です。
|
カメラ | 値:
GMSCameraPosition 地図のデフォルトのカメラの位置。
|
mapID | 値:
GMSMapID Google マップ ID。省略可能なパラメータ。
|
backgroundColor | 値:
UIColor デフォルトは UIColor.lightGray
|
地図オプションを構成する
独自のオプション プロパティを設定するか、インスタンス化された GMSMapViewOptions
をデフォルト値とともに GMSMapView
に直接渡します。
Swift
let options = GMSMapViewOptions() options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6) let mapView = GMSMapView(options:options)
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683 longitude:151.2086 zoom:6]; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
デフォルト値を含む GMSMapViewOptions
オブジェクトを GMSMapView
に直接渡す例を次に示します。
Swift
let options = GMSMapViewOptions() let mapView = GMSMapView(options:options) //initialized with default values
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; //initialized with default values
背景色を設定する
ダークモードで作業する場合や地図ビューを切り替える場合は、デフォルトの地図の背景色をオーバーライドすると便利です。そのためには、地図オプションの backgroundColor
プロパティを設定します。
Swift
let options = GMSMapViewOptions() options.backgroundColor = UIColor.yellowColor let mapView = GMSMapView(options:options)
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.backgroundColor = UIColor.yellowColor; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
地図タイプ
地図は各種マップ タイプのいずれかを使用してカスタマイズできます。地図のタイプは、地図の全体的な表現を管理します。たとえば、地図帳には通常、境界を重視した政治地図と、都市や地域のすべての道路を示す道路地図が含まれています。Maps SDK for iOS では、次の種類のマップが提供されています。
マップの種類 | |
---|---|
標準 | 値:
kGMSTypeNormal 通常の道路地図。道路、人間が建設した一部の対象物、川などの重要な自然対象物が表示されます。道路や地形のラベルも表示されます。地図のカラーパターンをダークモード、ライトモード、またはシステム設定に従うように設定できます。
|
ハイブリッド | 値:
kGMSTypeHybrid 航空写真データに道路地図を加えたもの。道路と地形のラベルも表示されます。 |
航空写真 | 値:
kGMSTypeSatellite 航空写真データ。道路や地形のラベルが表示されない。
|
地形 | 値:
kGMSTypeTerrain 地勢データ。地図には、色、等高線、ラベル、遠近法による陰影が含まれています。一部の道路とラベルも表示されます。地図のカラーパターンをダークモード、ライトモード、またはシステム設定に従うように設定できます。
|
なし | 値:
kGMSTypeNone マップ タイルなし。ベース マップ タイルは表示されません。このモードは、タイルレイヤと組み合わせて使用すると便利です。地図タイプが「なし」に設定されている場合、交通状況データの表示は無効になります。 |
地図タイプの変更
マップのタイプを設定するには、GMSMapView.mapType
プロパティに新しい値を割り当てます。たとえば、航空写真マップタイプを表示するには、次のようにします。
Swift
let options = GMSMapViewOptions() options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6) let mapView = GMSMapView(options:options) mapView.mapType = .satellite
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683 longitude:151.2086 zoom:6]; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; mapView.mapType = kGMSTypeSatellite;
下の選択ツールは、同じ場所の地形地図、通常地図、ハイブリッド地図の比較を示しています。
インドアマップ
ズームレベルが高いと、Maps SDK for iOS では、空港、ショッピングモール、大型小売店、交通機関の駅などの屋内空間のフロアプランが表示されます。インドア構内図は、「通常」の地図タイプ(kGMSTypeNormal
)のデフォルトの地図タイル内に統合されており、ユーザーがズームインすると自動的に有効になり、地図がズームアウトされるとフェードアウトします。
インドアマップを無効にするには、GMSMapView
の indoorEnabled
プロパティを NO
に設定します。
Swift
mapView.isIndoorEnabled = false
Objective-C
mapView.indoorEnabled = NO;
または、階層選択ツールのみを無効にすることもできます。
間取り図の追加
フロアプランは、一部の場所でのみご利用いただけます。アプリケーションでハイライトしたい建物の構内図データが提供されていない場合は、以下の方法で表示できます。
- Google マップに直接構内図を追加します。これにより、Google マップのすべてのユーザーがプランを利用できるようになります。
- 構内図をグラウンド オーバーレイとして表示する。これにより、アプリケーションのユーザーのみが間取りを表示できるようになります。
交通状況レイヤ
地図上に交通量情報を重ねて表示する機能を、ユーザーに提供することができます。これにより、ユーザーが地域の交通状況を視覚的に把握できるようになります。トラフィック レイヤのオン / オフは、trafficEnabled
メソッドを呼び出すことで切り替えることができます。地図上に表示される交通状況レイヤの例を次に示します。
ユーザー補助
ユーザー補助要素はデフォルトでは地図上に表示されないようになっています。ユーザー補助を有効にするには、GMSMapView
の accessibilityElementsHidden
プロパティを NO
に設定します。これにより、オーバーレイ オブジェクト(GMSMarker
や情報ウィンドウ、GMSPolyline
など)にユーザー補助要素が生成されます。
Swift
mapView.accessibilityElementsHidden = false
Objective-C
mapView.accessibilityElementsHidden = NO;
このプロパティは、非公式の UIAccessibility
プロトコルと同じですが、Maps SDK for iOS のデフォルト値は YES
です。
現在地
デフォルトでは、地図に位置情報が表示されることはありません。青い「自分の位置情報」のドットとコンパスの向きを有効にするには、GMSMapView
で myLocationEnabled
を設定します。
Swift
mapView.isMyLocationEnabled = true
Objective-C
mapView.myLocationEnabled = YES;
この機能を有効にすると、myLocation
プロパティを通じてユーザーの現在地が提供されます。このプロパティは、iOS からこのデータへのアクセスを許可するようユーザーに求めるメッセージが表示されている場合など、すぐに利用できないことがあります。この場合は nil
です。
Swift
print("User's location: \(String(describing: mapView.myLocation))")
Objective-C
NSLog(@"User's location: %@", mapView.myLocation);
建物の 3D 表示
多くの都市では、近くで見ると 3D の建物が表示されます(下記のワシントン州シアトルの画像を参照)。
3D 建物を無効にするには、Swift または Objective-C で対応する GMSMapView
プロパティを設定します。
Swift
mapView.isBuildingsEnabled = false
Objective-C
[mapView setBuildingsEnabled:NO];
地図のパディング
Google マップは、GMSMapView
で定義された領域全体に表示されるように設計されています。地図の表示方法と動作のいくつかの要素は、ビューのディメンションで定義されます。
- カメラの位置は、パディングされた領域の中心が対象となります。
- 地図コントロールは、地図の端を基準として配置されます。
- 著作権に関する通知や Google ロゴなどの法的情報は、地図の下端に沿って表示されます。
地図の周囲にパディングを追加するには、GMSMapView
.padding
プロパティ。地図は引き続きコンテナ全体に表示されます。ただし、テキストとコントロールの配置、地図のジェスチャー、カメラの動きは、より狭いスペースに配置されている場合と同じように動作します。これにより、次のような変更が加わります。
- API 呼び出しやボタンの押下によるカメラの移動(コンパス、現在地など)は、パディングされた領域を基準とします。
GMSMapView
.projection
は、パディングされた領域のみを含む投影を返します。- UI コントロールは、指定されたポイント数だけコンテナの端からオフセットされます。
パディングは、地図の一部と重複する UI を設計する際に役立ちます。たとえば、この画像では、マップは上端と右端にパディングされています。表示される地図コントロールと法的テキストは、パディングされた領域の端に沿って表示されます(緑色)。地図はコンテナ全体に引き続き表示されます(青色)。この例では、地図のコントロールを隠すことなく、地図の右側にメニューをフローティング表示できます。
地図にパディングを追加するには、UIEdgeInsets
オブジェクトを作成し、GMSMapView
に渡します。padding
プロパティ。
Swift
// Insets are specified in this order: top, left, bottom, right let mapInsets = UIEdgeInsets(top: 100.0, left: 0.0, bottom: 0.0, right: 300.0) mapView.padding = mapInsets
Objective-C
// Insets are specified in this order: top, left, bottom, right UIEdgeInsets mapInsets = UIEdgeInsetsMake(100.0, 0.0, 0.0, 300.0); mapView.padding = mapInsets;
地図のカラーパターン
通常の地図と地形地図では、地図のカラーパターンをダークモード、ライトモード、または現在のシステム設定に設定できます。たとえば、デバイスの使用時間や屋内外での使用状況に応じて、地図のカラーパターンを暗くしたり明るくしたりできます。
GMSMapView
overrideUserInterfaceStyle:
を使用して、地図のカラーパターンを設定および更新します。
Swift
let options = GMSMapViewOptions() // Map is init to use light mode by default. let mapView = GMSMapView(options: options) // Set map to use dark mode. mapView.overrideUserInterfaceStyle = .dark // Set map to use light mode. mapView.overrideUserInterfaceStyle = .light // Set map to use dark/light mode based on the value of traitCollection.userInterfaceStyle mapView.overrideUserInterfaceStyle = .unspecified
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; // Map is init to always use light mode. GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; // Set map to use dark mode. mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleDark; // Set map to use light mode. mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleLight; // Set map to use dark/light mode based on the value of traitCollection.userInterfaceStyle mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleUnspecified;