Lớp phủ mặt đất

Chọn nền tảng: Android iOS JavaScript

Lớp phủ trên mặt đất là lớp phủ trên bản đồ được liên kết với toạ độ vĩ độ/kinh độ, vì vậy, lớp phủ này sẽ di chuyển khi bạn kéo hoặc thu phóng bản đồ.

Giới thiệu

Lớp phủ trên mặt đất là một hình ảnh được cố định vào bản đồ. Không giống như các điểm đánh dấu, lớp phủ mặt đất được định hướng theo bề mặt Trái Đất chứ không phải màn hình, vì vậy, việc xoay, nghiêng hoặc thu phóng bản đồ sẽ thay đổi hướng của hình ảnh.

Để thêm lớp phủ mặt đất, hãy tạo một đối tượng GMSGroundOverlay xác định cả biểu tượng và ranh giới. Nếu không chỉ định một trong hai, lớp phủ mặt đất sẽ không xuất hiện trên bản đồ. Bạn có thể chỉ định các chế độ cài đặt bổ sung (không bắt buộc) sẽ ảnh hưởng đến vị trí của hình ảnh trên bản đồ. Sau khi bạn xác định các lựa chọn cần thiết, hãy đặt thuộc tính map của đối tượng này để thêm lớp phủ.

Thêm lớp phủ

  1. Tạo một đối tượng GMSGroundOverlay mới
  2. Đặt thuộc tính icon thành một thực thể của UIImage.
  3. Đặt thuộc tính bounds thành một thực thể của GMSCoordinateBounds. Các ranh giới này đại diện cho các góc tây nam và đông bắc của hình ảnh.
  4. Đặt các thuộc tính không bắt buộc, chẳng hạn như bearingzoomLevel, nếu muốn.
  5. Đặt thuộc tính map – hình ảnh sẽ xuất hiện trên bản đồ.

Ví dụ dưới đây minh hoạ cách thêm lớp phủ mặt đất vào một đối tượng GMSMapView hiện có.

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;
      

Xoá lớp phủ

Bạn có thể xoá lớp phủ mặt đất khỏi bản đồ bằng cách đặt thuộc tính map của GMSGroundOverlay thành nil. Ngoài ra, bạn có thể xoá tất cả lớp phủ (bao gồm cả lớp phủ mặt đất hiện có trên bản đồ) bằng cách gọi phương thức GMSMapView clear.

Swift

mapView.clear()
      

Objective-C

[mapView clear];
      

Nếu bạn muốn sửa đổi lớp phủ mặt đất sau khi thêm lớp phủ đó vào bản đồ, hãy đảm bảo rằng bạn giữ lại đối tượng GMSGroundOverlay. Sau này, bạn có thể sửa đổi lớp phủ mặt đất bằng cách thay đổi đối tượng này.

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;
      

Sự kiện

Bạn có thể theo dõi các sự kiện xảy ra trên bản đồ, chẳng hạn như khi người dùng nhấn vào một lớp phủ. Để theo dõi các sự kiện, bạn phải triển khai giao thức GMSMapViewDelegate. Xem hướng dẫn về sự kiện và danh sách các phương thức trên GMSMapViewDelegate.