地圖是由 GMSMapView
類別 (UIView
的子類別) 在 API 中呈現。地圖在 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 中加入地圖必須符合 UIViewRepresentable
或 UIViewControllerRepresentable
的規定。詳情請參閱本程式碼研究室:使用 SwiftUI 在 iOS 應用程式中加入地圖。
新增地圖
加入地圖的基本步驟如下:
如要取得 SDK 和 API 金鑰並新增必要架構,請按照以下各篇文章的步驟操作:
在您的
AppDelegate
中,將 API 金鑰提供給GMSServices
的provideAPIKey:
類別方法。建立或更新
ViewController
。如果這個檢視控制器變為可見,地圖將顯示,請務必在loadView
方法中建立地圖。建立
GMSCameraPosition
物件,指定地圖的中心和縮放等級。對GMSMapView
物件執行個體化時,您必須傳遞GMSCameraPosition
物件做為必要參數。使用
GMSMapView
mapWithFrame:
方法建立GMSMapView
類別並執行個體化。如果這張地圖是用做檢視控制器的唯一檢視畫面,便可使用CGRectZero
做為地圖的影格,系統會自動調整地圖的大小。將
GMSMapView
物件設為檢視畫面控制器的檢視畫面,例如self.view = mapView;
。
下面的示例添加一個地圖,中心位於新加坡市中心,到一個應用程序。
Swift
import GoogleMaps class MapObjects : UIViewController { override func viewDidLoad() { super.viewDidLoad() let camera = GMSCameraPosition(latitude: 1.285, longitude: 103.848, zoom: 12) let mapView = GMSMapView(frame: .zero, camera: camera) self.view = mapView } }
Objective-C
#import "MapObjects.h" @import GoogleMaps; @implementation MapObjects - (void)viewDidLoad { [super viewDidLoad]; GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:1.285 longitude:103.848 zoom:12]; GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; self.view = mapView; } @end
完成這些步驟後,您可以進一步設定 GMSMapView
物件。
後續步驟
完成以上步驟後,您即可調整地圖設定。