地圖疊加層是固定在地圖上某個經緯度座標的疊加層,因此當您拖曳或縮放地圖時,區域疊加層會隨之移動。
簡介
區域疊加層是指固定於地圖上的圖片。不同於標記,區域疊加層顯示方向的依據是實際地表而非裝置螢幕,因此當您旋轉、傾斜或縮放地圖時,圖片的方向也會隨之改變。
如要新增區域疊加層,請建立同時定義圖示和邊界的 GMSGroundOverlay
物件。如未指定,地圖疊加層就不會在地圖上顯示。您可以視需要針對地圖上的圖片位置指定額外設定;定義必要的選項後,請設定這個物件的 map
屬性以新增疊加層。
新增重疊元素
- 將新的
GMSGroundOverlay
物件執行個體化 - 將
icon
屬性設定為UIImage
的例項。 - 將
bounds
屬性設定為GMSCoordinateBounds
的例項。邊界代表圖片的西南角和東北角。 - 視需求設定選用屬性,例如
bearing
和zoomLevel
。 - 設定
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;
移除疊加層
將 GMSGroundOverlay
的 map
屬性設為 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