區域疊加層

選取平台: Android iOS JavaScript

地圖疊加層是地圖上的疊加層,與經緯度座標相關聯,因此在您拖曳或縮放地圖時,疊加層也會移動。

簡介

區域疊加層是指固定於地圖上的圖片。與標記不同,地面覆蓋圖會以地球表面而非螢幕為方向,因此旋轉、傾斜或縮放地圖會改變圖片的方向。

如要新增地面疊加圖層,請建立GMSGroundOverlay 物件,同時定義圖示和邊界。如果未指定這兩者,地圖上就不會顯示區域疊加層。您可以選擇指定其他設定,以影響圖片在地圖上的顯示位置。定義必要選項後,請設定這個物件的 map 屬性,以便新增疊加層。

新增疊加層

  1. 將新的 GMSGroundOverlay 物件執行個體化
  2. icon 屬性設為 UIImage 的例項。
  3. bounds 屬性設為 GMSCoordinateBounds 的例項。邊界代表圖片的西南角和東北角。
  4. 視需要設定選用屬性,例如 bearingzoomLevel
  5. 設定 map 屬性 - 圖片會顯示在地圖上。

以下範例說明如何將區域疊加層加到現有的 GMSMapView 物件。

Swift

let southWest = CLLocationCoordinate2D(latitude: 40.712216, longitude: -74.22655)
let northEast = CLLocationCoordinate2D(latitude: 40.773941, longitude: -74.12544)
let overlayBounds = GMSCoordinateBounds(coordinate: southWest, coordinate: northEast)

// Image from http://www.lib.utexas.edu/maps/historical/newark_nj_1922.jpg
let icon = UIImage(named: "newark_nj_1922")

let overlay = GMSGroundOverlay(bounds: overlayBounds, icon: icon)
overlay.bearing = 0
overlay.map = mapView
      

Objective-C

CLLocationCoordinate2D southWest = CLLocationCoordinate2DMake(40.712216,-74.22655);
CLLocationCoordinate2D northEast = CLLocationCoordinate2DMake(40.773941,-74.12544);
GMSCoordinateBounds *overlayBounds = [[GMSCoordinateBounds alloc] initWithCoordinate:southWest
                                                                        coordinate:northEast];

// Image from http://www.lib.utexas.edu/maps/historical/newark_nj_1922.jpg
UIImage *icon = [UIImage imageNamed:@"newark_nj_1922"];
GMSGroundOverlay *overlay = [GMSGroundOverlay groundOverlayWithBounds:overlayBounds icon:icon];
overlay.bearing = 0;
overlay.map = mapView;
      

移除疊加層

您可以將 GMSGroundOverlaymap 屬性設為 nil,即可從地圖中移除地面覆蓋圖。或者,您也可以呼叫 GMSMapView clear 方法,移除所有疊加層 (包括目前在地圖上的地面疊加層)。

Swift

mapView.clear()
      

Objective-C

[mapView clear];
      

如果您想在將地面覆蓋圖新增至地圖後進行修改,請務必保留 GMSGroundOverlay 物件。您稍後可以修改這個物件,藉此修改地圖覆蓋圖。

Swift

let overlay = GMSGroundOverlay(bounds: overlayBounds, icon: icon)
overlay.bearing = 0
overlay.map = mapView

// ...

overlay.isTappable = true
      

Objective-C

GMSGroundOverlay *overlay = [GMSGroundOverlay groundOverlayWithBounds:overlayBounds icon:icon];
overlay.bearing = 0;
overlay.map = mapView;

// ...
overlay.tappable = YES;
      

活動

您可以監聽地圖上發生的事件,例如使用者輕觸疊加圖時。如要監聽事件,您必須實作 GMSMapViewDelegate 通訊協定。請參閱事件指南GMSMapViewDelegate 上的可用方法清單。