區域疊加層

選取平台: 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 中的方法清單。