Cửa sổ thông tin cho phép bạn hiển thị thông tin cho người dùng khi họ nhấn vào điểm đánh dấu.
Một cửa sổ thông tin được vẽ hướng dựa vào màn hình của thiết bị, ở chính giữa phía trên điểm đánh dấu được liên kết. Cửa sổ thông tin mặc định chứa tiêu đề được in đậm, bằng văn bản đoạn nội dung bên dưới tiêu đề.
Nội dung của cửa sổ thông tin được title
và
snippet
thuộc tính của điểm đánh dấu. Việc nhấp vào điểm đánh dấu sẽ không hiển thị
cửa sổ thông tin nếu cả hai thuộc tính title
và snippet
đều trống hoặc nil
.
Mỗi lần chỉ có một cửa sổ thông tin được hiển thị. Nếu người dùng nhấn vào một điểm đánh dấu khác, cửa sổ hiện tại bị ẩn và cửa sổ thông tin mới sẽ mở ra. Nếu người dùng nhấp vào một điểm đánh dấu hiện đang hiển thị cửa sổ thông tin, điều đó cửa sổ thông tin sẽ đóng rồi mở lại.
Tạo cửa sổ thông tin tuỳ chỉnh để thêm văn bản hoặc hình ảnh bổ sung. Tùy chỉnh cửa sổ thông tin cho phép bạn kiểm soát hoàn toàn giao diện của cửa sổ bật lên.
Thêm cửa sổ thông tin
Đoạn mã sau tạo một điểm đánh dấu đơn giản, chỉ có một tiêu đề cho văn bản của cửa sổ thông tin.
Swift
let position = CLLocationCoordinate2D(latitude: 51.5, longitude: -0.127) let london = GMSMarker(position: position) london.title = "London" london.map = mapView
Objective-C
CLLocationCoordinate2D position = CLLocationCoordinate2DMake(51.5, -0.127); GMSMarker *london = [GMSMarker markerWithPosition:position]; london.title = @"London"; london.map = mapView;
Với thuộc tính snippet
, bạn có thể thêm văn bản bổ sung sẽ xuất hiện
bên dưới tiêu đề bằng phông chữ nhỏ hơn. Chuỗi dài hơn chiều rộng của
cửa sổ thông tin được tự động ngắt quãng trên một vài dòng. Rất dài
thư có thể bị cắt bớt.
Swift
london.title = "London" london.snippet = "Population: 8,174,100" london.map = mapView
Objective-C
london.title = @"London"; london.snippet = @"Population: 8,174,100"; london.map = mapView;
Hiển thị/ẩn cửa sổ thông tin
Cửa sổ thông tin được thiết kế để phản hồi các sự kiện chạm của người dùng trên điểm đánh dấu.
Bạn có thể hiện hoặc ẩn cửa sổ thông tin theo phương thức lập trình bằng cách đặt selectedMarker
thuộc tính của GMSMapView
:
- Đặt
selectedMarker
thành tên của điểm đánh dấu để hiển thị điểm đánh dấu. - Hãy đặt
selectedMarker
thànhnil
để ẩn.
Swift
london.title = "London" london.snippet = "Population: 8,174,100" london.map = mapView // Show marker mapView.selectedMarker = london // Hide marker mapView.selectedMarker = nil
Objective-C
london.title = @"London"; london.snippet = @"Population: 8,174,100"; london.map = mapView; // Show marker mapView.selectedMarker = london; // Hide marker mapView.selectedMarker = nil;
Đặt cửa sổ thông tin để tự động làm mới
Đặt tracksInfoWindowChanges
trên
điểm đánh dấu sang YES
hoặc true
nếu bạn muốn biết thuộc tính mới hoặc nội dung thông tin
cửa sổ hiện ra ngay khi có thay đổi, thay vì phải đợi
cửa sổ thông tin cần ẩn rồi hiển thị lại. Giá trị mặc định là NO
hoặc false
.
Swift
london.tracksInfoWindowChanges = true
Objective-C
london.tracksInfoWindowChanges = YES;
Để quyết định thời điểm đặt
tracksInfoWindowChanges
, bạn
nên xem xét các cân nhắc về hiệu suất so với lợi thế của việc có
cửa sổ thông tin được vẽ lại tự động. Ví dụ:
- Nếu cần thực hiện một loạt thay đổi, bạn có thể thay đổi thuộc tính này thành
YES
sau đó quay lạiNO
. - Khi ảnh động đang chạy hoặc nội dung được tải không đồng bộ,
bạn nên đặt thuộc tính này thành
YES
cho đến khi các thao tác hoàn tất.
Ngoài ra, hãy tham khảo các lưu ý cần lưu ý khi
bằng cách sử dụng thuộc tính iconView
của điểm đánh dấu.
Thay đổi vị trí của cửa sổ thông tin
Một cửa sổ thông tin được vẽ hướng dựa vào màn hình của thiết bị, ở chính giữa
phía trên điểm đánh dấu được liên kết. Bạn có thể thay đổi vị trí của cửa sổ thông tin
tương ứng với điểm đánh dấu bằng cách đặt thuộc tính infoWindowAnchor
. Chiến dịch này
thuộc tính chấp nhận CGPoint
, được xác định là giá trị bù (x,y) trong đó cả x và y
nằm trong khoảng từ 0,0 đến 1,0. Độ lệch mặc định là (0,5, 0,0), nghĩa là trung tâm
trên cùng. Việc đặt độ lệch infoWindowAnchor
rất hữu ích trong việc căn chỉnh thông tin
cửa sổ đối diện với một biểu tượng tuỳ chỉnh.
Swift
london.infoWindowAnchor = CGPoint(x: 0.5, y: 0.5) london.icon = UIImage(named: "house") london.map = mapView
Objective-C
london.infoWindowAnchor = CGPointMake(0.5, 0.5); london.icon = [UIImage imageNamed:@"house"]; london.map = mapView;
Xử lý sự kiện trên cửa sổ thông tin
Bạn có thể nghe các sự kiện sau đây trên cửa sổ thông tin:
mapView:markerInfoWindow:
— Được gọi khi một điểm đánh dấu sắp được chọn. Có thể tuỳ ý trả về một cửa sổ thông tin tuỳ chỉnh dưới dạngUIView
để dùng cho điểm đánh dấu. Xem phần Cửa sổ thông tin tuỳ chỉnh ở bên dưới để biết thêm thông tin.mapView:markerInfoContents:
— Được gọi khimapView:markerInfoWindow
trả về giá trị 0.mapView:didCloseInfoWindowOfMarker:
— Được gọi khi cửa sổ thông tin của điểm đánh dấu đóng.mapView:didLongPressInfoWindowOfMarker:
— Được gọi sau khi cửa sổ thông tin của điểm đánh dấu được nhấn và giữ.
Để nghe 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 pháp trên
GMSMapViewDelegate
.
GitHub bao gồm các mẫu minh hoạ cách xử lý các sự kiện trên cửa sổ thông tin:
Cửa sổ thông tin tuỳ chỉnh
Tuỳ chỉnh nội dung của cửa sổ thông tin bằng cách tạo một lớp con của
UIView
xác định bố cục của cửa sổ thông tin tuỳ chỉnh. Trong lớp con đó,
hãy xác định chế độ xem
theo cách mong muốn. Ví dụ: bạn có thể sử dụng công cụ tuỳ chỉnh
UILabel
để hiển thị tiêu đề và văn bản trích đoạn nội dung cũng như các chế độ xem khác, chẳng hạn như
UIImageView
để thêm hình ảnh hiển thị trong cửa sổ thông tin.
Đảm bảo rằng ViewController
của bạn sẽ triển khai
GMSIndoorDisplayDelegate
giao thức và xác định trình nghe cho
mapView:markerInfoWindow:
sự kiện. Trình nghe sự kiện này được gọi khi một điểm đánh dấu sắp trở thành
đã chọn và cho phép bạn trả về một thực thể của lớp UIView
tuỳ chỉnh cho
xác định cửa sổ thông tin tuỳ chỉnh mà điểm đánh dấu sử dụng.
Các hình ảnh dưới đây hiển thị một cửa sổ thông tin mặc định, một cửa sổ thông tin với và cửa sổ thông tin với khung và nền tuỳ chỉnh.
Mã mẫu trên GitHub được cung cấp cùng với SDK Bản đồ dành cho iOS chẳng hạn như các mẫu cửa sổ thông tin tuỳ chỉnh. Ví dụ: xem định nghĩa của MarkerInfoWindowViewController.m (Mục tiêu-C) hoặc MarkerInfoWindowViewController.swift (Swift).
Xem mã mẫu để biết thông tin về cách tải xuống và chạy các mẫu này.