Cửa sổ bật lên

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

Bản đồ San Francisco có điểm đánh dấu và cửa sổ bật lên trên Toà nhà Ferry.

Chú thích hiển thị nội dung (thường là văn bản hoặc hình ảnh) trong một cửa sổ bong bóng thông tin phía trên bản đồ, tại một vị trí nhất định. Popover có một vùng nội dung và một cuống thon. Đầu của cuống được gắn vào một vị trí cụ thể trên bản đồ.

Thông thường, bạn sẽ đính kèm một cửa sổ bật lên vào một điểm đánh dấu bằng cách sử dụng công cụ sửa đổi .popover, nhưng bạn cũng có thể đính kèm một cửa sổ bật lên vào một toạ độ LatLng cụ thể có độ cao hoặc bù đắp cho toạ độ đó so với một điểm đánh dấu.

Thêm cửa sổ bật lên

Để thêm một cửa sổ bật lên, hãy tạo một thực thể Popover và đặt các lựa chọn cho thực thể đó, bao gồm cả chế độ vị trí và độ cao. Vị trí là một đối tượng LatLngAltitude, xác định vị trí hiển thị của cửa sổ bật lên. Bạn có thể kiểm soát cách diễn giải độ cao khi cố định bằng LatLngAltitude bằng cách đặt chế độ độ cao. Nếu bạn liên kết với một điểm đánh dấu, thì vị trí của điểm đánh dấu sẽ được dùng.

Bạn có thể tuỳ chỉnh nội dung của cửa sổ bật lên bằng Khung hiển thị SwiftUI. Bạn có thể cung cấp bố cục tuỳ chỉnh bằng cách truyền một đóng View builder đến thực thể Popover hoặc đối tượng sửa đổi .popover.

Thêm cửa sổ bật lên vào đối tượng LatLngAltitude

Mã mẫu sau đây thêm một cửa sổ bật lên vào đối tượng LatLngAltitude:

import GoogleMaps3D
import SwiftUI

struct SimpleCoordinatePopover: View {
  @State private var isOpen = true
  // Alcatraz Island coordinates
  private let alcatraz = LatLngAltitude(latitude: 37.8270, longitude: -122.4230)

  var body: some View {
    Map(initialCamera: .init(latitude: 37.8270, longitude: -122.4230)) {
      Popover(
        positionAnchor: alcatraz,
        isOpen: $isOpen
      ) {
        Text("Alcatraz Island")
      }
    }
  }
}

Thêm một cửa sổ bật lên vào điểm đánh dấu

Đoạn mã mẫu sau đây sẽ thêm một cửa sổ bật lên vào một điểm đánh dấu:

import GoogleMaps3D
import SwiftUI

struct SimpleMarkerPopover: View {
  @State private var isOpen = false
  // Ferry Building coordinates
  private let ferryBuilding = LatLngAltitude(latitude: 37.7955, longitude: -122.3937)

  var body: some View {
    Map(initialCamera: .init(latitude: 37.7955, longitude: -122.3937)) {
      Marker(position: ferryBuilding)
        .popover(isOpen: $isOpen) {
          Text("Ferry Building")
        }
        .onTap {
          isOpen.toggle()
        }
    }
  }
}