การวางซ้อนพื้น

เลือกแพลตฟอร์ม: Android iOS JavaScript

การวางซ้อนภาคพื้นดิน คือการวางซ้อนบนแผนที่ที่เชื่อมโยงกับพิกัดละติจูด/ลองจิจูด ดังนั้นจึงจะเคลื่อนที่เมื่อคุณลากหรือซูมแผนที่

เกริ่นนำ

ภาพวางซ้อนพื้นดินคือภาพที่ยึดติดกับแผนที่ การวางซ้อนพื้นจะแตกต่างจากเครื่องหมายตรงที่พื้นผิวโลกจะวางตัวเทียบกับพื้นผิวโลก ดังนั้นการหมุน การเอียง หรือการซูมแผนที่จะเปลี่ยนการวางแนวของภาพ

หากต้องการเพิ่มการวางซ้อนพื้น ให้สร้างออบเจ็กต์ GMSGroundOverlay ที่กำหนดทั้งไอคอนและขอบเขต การไม่ระบุอันใดอันหนึ่งจะทำให้พื้นดิน ไม่ปรากฏบนแผนที่ คุณสามารถเลือกระบุการตั้งค่าเพิ่มเติมที่ จะส่งผลต่อการวางตำแหน่งของรูปภาพบนแผนที่ เมื่อคุณกำหนดตัวเลือกที่จำเป็นแล้ว ให้ตั้งค่าพร็อพเพอร์ตี้ map ของออบเจ็กต์นี้เพื่อเพิ่มการวางซ้อน

การเพิ่มการวางซ้อน

  1. สร้างอินสแตนซ์ของออบเจ็กต์ GMSGroundOverlay ใหม่
  2. ตั้งค่าพร็อพเพอร์ตี้ icon เป็นอินสแตนซ์ UIImage
  3. ตั้งค่าพร็อพเพอร์ตี้ bounds เป็นอินสแตนซ์ GMSCoordinateBounds เส้นแบ่งหมายถึงพื้นที่ตะวันตกเฉียงใต้และมุมตะวันออกเฉียงเหนือของรูปภาพ
  4. ตั้งค่าพร็อพเพอร์ตี้ที่ไม่บังคับ เช่น bearing และ zoomLevel ตามต้องการ
  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;
      

การนำการวางซ้อนออก

คุณสามารถนำการวางซ้อนพื้นออกจากแผนที่ได้โดยตั้งค่าพร็อพเพอร์ตี้ map ของ GMSGroundOverlay เป็น 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