資訊視窗

選取平台: Android iOS JavaScript

顯示在標記上的資訊視窗。

使用者輕觸「資訊視窗」時, 標記。

資訊視窗會依據裝置畫面顯示在上方中央 相關的標記預設資訊視窗包含粗體字標題 並將程式碼片段文字置於標題下方。

資訊視窗的內容是由 title 和 標記的 snippet 屬性。按一下標記並不會顯示 資訊視窗 (如果 titlesnippet 屬性都為空白或 nil)。

系統一次只會顯示一個資訊視窗。如果使用者輕觸 另一個標記,系統會隱藏目前的視窗,新的資訊視窗隨即開啟。 如果使用者點選目前正在顯示資訊視窗的標記, 資訊視窗就會關閉,然後重新開啟。

建立自訂資訊視窗,加入其他文字或圖片。自訂 資訊視窗可讓您完全控制彈出式視窗的外觀。

新增資訊視窗

下列程式碼片段會建立簡單的標記,僅包含文字的標題 。

Swift

let position = CLLocationCoordinate2D(latitude: 51.5, longitude: -0.127)
let london = GMSMarker(position: position)
london.title = "London"
london.map = mapView
      

Objective-C

CLLocationCoordinate2D position = CLLocationCoordinate2DMake(51.5, -0.127);
GMSMarker *london = [GMSMarker markerWithPosition:position];
london.title = @"London";
london.map = mapView;
      

使用 snippet 屬性時,您可以新增要在畫面上顯示的其他文字 顯示在標題下方的小字型下長度超過 資訊視窗會自動換行。非常長 訊息可能會遭到截斷。

Swift

london.title = "London"
london.snippet = "Population: 8,174,100"
london.map = mapView
      

Objective-C

london.title = @"London";
london.snippet = @"Population: 8,174,100";
london.map = mapView;
      

顯示/隱藏資訊視窗

資訊視窗的作用是回應標記上的使用者觸控事件。 您可以設定 selectedMarker,以程式輔助的方式顯示或隱藏資訊視窗 「GMSMapView」的資源:

  • selectedMarker 設為標記名稱即可顯示標記。
  • 如要隱藏,請將 selectedMarker 設為 nil

Swift

london.title = "London"
london.snippet = "Population: 8,174,100"
london.map = mapView
// Show marker
mapView.selectedMarker = london
// Hide marker
mapView.selectedMarker = nil
      

Objective-C

london.title = @"London";
london.snippet = @"Population: 8,174,100";
london.map = mapView;
// Show marker
mapView.selectedMarker = london;
// Hide marker
mapView.selectedMarker = nil;
      

設定自動重新整理的資訊視窗

在以下項目中設定 tracksInfoWindowChanges: 標記 YEStrue (如果需要新屬性或資訊內容) 進行變更後立即顯示,不必等待 即可隱藏資訊視窗,然後重新顯示。預設為 NOfalse

Swift

london.tracksInfoWindowChanges = true
      

Objective-C

london.tracksInfoWindowChanges = YES;
      

若要決定何時該在 tracksInfoWindowChanges 資源,則您 都應該從效能考量來衡量 資訊視窗會自動重新繪製。例如:

  • 如要進行一系列變更,可以將屬性變更為 YES 再返回 NO
  • 當動畫放送或內容以非同步方式載入時 您應在動作完成前,將屬性設為 YES

此外,也請參閱注意事項: 方法是使用標記的 iconView 屬性。

變更資訊視窗的位置

資訊視窗會依據裝置螢幕方向顯示在相關標記的正上方,您可以變更資訊視窗的位置 設定 infoWindowAnchor 屬性,以調整與標記的相對位置。這個 屬性接受 CGPoint,定義為 (x,y) 偏移,其中 x 和 y 介於 0.0 到 1.0 之間預設偏移量為 (0.5, 0.0),也就是中間 上方。設定 infoWindowAnchor 偏移有助於對齊資訊 旁邊顯示一個視窗

Swift

london.infoWindowAnchor = CGPoint(x: 0.5, y: 0.5)
london.icon = UIImage(named: "house")
london.map = mapView
      

Objective-C

london.infoWindowAnchor = CGPointMake(0.5, 0.5);
london.icon = [UIImage imageNamed:@"house"];
london.map = mapView;
      

處理資訊視窗中的事件

您可以監聽下列資訊視窗事件:

若要監聽事件,您必須實作 GMSMapViewDelegate 通訊協定。詳情請參閱 事件指南,以及 GMSMapViewDelegate

GitHub 包含示範如何處理資訊視窗事件的範例:

自訂資訊視窗

建立 UIView敬上 ,用於定義自訂資訊視窗的版面配置。在該子類別中 以您想要的方式定義檢視。例如,您可以使用 UILabel敬上 顯示標題、摘要文字以及其他視圖,例如 UIImageView 執行個體,加入在資訊視窗中顯示的圖片。

確認 ViewController 實作 GMSIndoorDisplayDelegate 並定義 mapView:markerInfoWindow: 活動。當標記即將成為 並且可讓您將自訂 UIView 類別的例項傳回給 會定義標記所使用的自訂資訊視窗。

下方圖片分別顯示預設資訊視窗、包含自訂內容的資訊視窗,以及包含自訂頁框和背景的資訊視窗。

資訊視窗比較

這個 Google Cloud 專案的程式碼範例 GitHub Maps SDK for iOS 提供的 包括自訂資訊視窗的範例。如需範例,請參閱 MarkerInfoWindowViewController.m (Objective-C) 或 MarkerInfoWindowViewController.swift (Swift)。

請參閱程式碼範例,瞭解如何下載和執行 範例。