區域疊加層

選取平台: Android iOS JavaScript

區域疊加層是指地圖上與經緯度座標連動的疊加層,因此會隨著您拖曳或縮放地圖而移動。

簡介

區域疊加層是指固定於地圖上的圖片。不同於標記,區域疊加層顯示方向的依據是實際地表而非裝置螢幕,因此旋轉、傾斜或縮放地圖時,圖片的方向也會隨之改變。

如要新增地面疊加層,請建立用於定義圖示和邊界的 GMSGroundOverlay 物件。如果未指定其中一項,地圖上就不會顯示區域疊加層。您可以視需要指定額外設定,影響圖片在地圖上的位置。定義必要的選項後,請設定這個物件的 map 屬性,即可新增疊加層。

新增疊加層

  1. 將新的 GMSGroundOverlay 物件執行個體化
  2. icon 屬性設為 UIImage 的例項。
  3. bounds 屬性設為 GMSCoordinateBounds 的例項。bounds 代表圖片的西南角和東北角。
  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 中的方法清單。