新增地圖

選取平台: Android iOS JavaScript

API 中的地圖由 GMSMapView 類別表示,這是 UIView 的子類別。地圖是 Maps SDK for iOS 中最主要的物件,可提供必要方法,用於新增、移除及管理其他物件,例如標記和多邊形。

簡介

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

除了對應功能之外,API 也支援一系列與 iOS UI 模型一致的互動。舉例來說,您可以定義回應者來回應使用者的手勢 (例如輕觸和雙擊),藉此設定與地圖的互動方式。

使用 Map 物件時,主要類別為 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 類別。如果要將此地圖用於 View Controller 的唯一檢視畫面,地圖選項 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 物件。

後續步驟

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