新增地圖

選取平台: Android iOS JavaScript

地圖是由 GMSMapView 類別在 API 中呈現,後者是 UIView 的子類別。地圖是 Maps SDK for iOS 中最重要的物件,提供新增、移除及管理其他物件的必要方法,包括標記和折線等。

簡介

Maps SDK for iOS 可讓您在 iOS 應用程式中顯示 Google 地圖。這些地圖和您在 Google 地圖 iOS 應用程式中看到的地圖外觀相同,且 SDK 也提供許多相同的功能。

除了地圖功能外,API 還支援與 iOS UI 模型一致的互動範圍。例如,您可以定義回應者,以便回應使用者手勢 (例如輕觸和輕觸兩下),藉此設定與地圖的互動。

使用地圖物件時的金鑰類別為 GMSMapView 類別。GMSMapView 會自動處理下列作業:

  • 連線到 Google 地圖服務。
  • 下載地圖圖塊。
  • 在裝置螢幕上顯示圖塊。
  • 顯示各種控制項,如平移和縮放。
  • 移動地圖及放大/縮小,回應平移和縮放手勢。
    • 透過傾斜地圖的觀看角度回應雙指手勢。

除了這些自動操作之外,您也可以透過 GMSMapView 類別公開的屬性和方法,控制地圖的行為和外觀。GMSMapView 可讓您新增和移除標記、地圖疊加層和折線、變更顯示的地圖類型,以及透過 GMSCameraPosition 類別控制地圖上顯示的內容。

使用 SwiftUI 建構地圖

SwiftUI 提供另一種使用宣告式方法建立 UI 的方式。您只需告訴 SwiftUI 要如何顯示檢視畫面,以及所有不同的狀態,系統就會完成其餘的工作。當基礎狀態因事件或使用者動作而變更時,SwiftUI 會處理更新檢視畫面。

Maps SDK for iOS 是建構在 UIKit 之上,且不提供與 SwiftUI 相容的檢視畫面。在 SwiftUI 中新增地圖時,必須符合 UIViewRepresentableUIViewControllerRepresentable。如需更多資訊,請參閱程式碼研究室「使用 SwiftUI 在 iOS 應用程式中加入地圖」。

新增地圖

加入地圖的基本步驟如下:

  1. 如要取得 SDK、取得 API 金鑰並新增必要的架構,請按照以下各篇文章的步驟操作:

    1. 在 Google Cloud 控制台中完成相關設定

    2. 使用 API 金鑰

    3. 設定 Xcode 專案

    4. AppDelegate 中,將您的 API 金鑰提供給 GMSServices 上的 provideAPIKey: 類別方法。

    5. 建立或更新 ViewController。如果地圖會在這個 View Controller 顯示時顯示,請務必在 viewDidLoad 方法中建立地圖。

    6. 初始化地圖檢視畫面時,請使用 GMSMapViewOptions 設定設定選項。屬性包括 framecameramapIDbackgroundColorscreen

    7. 使用 GMSCameraPosition 物件設定地圖選項 camera 屬性。這會指定地圖的中心和縮放等級。

    8. 使用 GMSMapView options: 方法建立並將 GMSMapView 類別例項化。如果要將此地圖用作檢視控制器的唯一檢視畫面,地圖選項 frame 的預設值 CGRectZero 可用於檢視畫面 frame,系統會自動調整地圖大小。

    9. GMSMapView 物件設為 View Controller 的 View。例如 self.view = mapView;

下面的示例添加一個地圖,中心位於新加坡市中心,到一個應用程序。

Swift

import GoogleMaps

class MapObjects : UIViewController {
  override func viewDidLoad() {
    super.viewDidLoad()

    let options = GMSMapViewOptions()
    options.camera = GMSCameraPosition(latitude: 1.285, longitude: 103.848, zoom: 12)
    options.frame = self.view.bounds;

    let mapView = GMSMapView(options:options)
    self.view = mapView
  }
}

Objective-C

- (void)viewDidLoad {
  [super viewDidLoad];

  GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
  options.camera = [GMSCameraPosition cameraWithLatitude:1.285
                                                        longitude:103.848
                                                             zoom:12];
  options.frame = self.view.bounds;

  GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
  self.view = mapView;
}

完成這些步驟後,您可以進一步設定 GMSMapView 物件。

後續步驟

完成這些步驟後,您可以調整地圖設定