النوافذ المنبثقة

اختيار النظام الأساسي: Android iOS JavaScript

خريطة لمدينة سان فرانسيسكو مع علامة ونافذة منبثقة فوق مبنى Ferry Building

تعرض النافذة المنبثقة محتوى (عادةً ما يكون نصًا أو صورًا) في نافذة فقاعة معلومات فوق الخريطة، في موقع جغرافي معيّن. تحتوي النافذة المنبثقة على مساحة محتوى وساق مستدق. يتم ربط طرف الساق بموقع جغرافي محدّد على الخريطة.

عادةً ما تربط نافذة منبثقة بـ علامة باستخدام .popover المعدِّل، ولكن يمكنك أيضًا ربط نافذة منبثقة بإحداثيات LatLng معيّنة مع الارتفاع، أو إزاحتها من علامة.

إضافة نافذة منبثقة

لإضافة نافذة منبثقة، أنشئ كيان Popover واضبط خياراته، بما في ذلك الموضع ووضع الارتفاع. الموضع هو كائن LatLngAltitude، الذي يحدّد مكان عرض النافذة المنبثقة. يمكنك التحكّم في كيفية تفسير الارتفاع عند الربط باستخدام LatLngAltitude من خلال ضبط وضع الارتفاع. في حال الربط بعلامة، يتم استخدام موضع العلامة بدلاً من ذلك.

يمكن تخصيص محتوى النافذة المنبثقة باستخدام عناصر SwiftUI. يمكنك توفير تنسيقات مخصّصة من خلال تمرير إغلاق أداة إنشاء العرض إلى كيان Popover أو المعدِّل .popover.

إضافة نافذة منبثقة إلى كائن LatLngAltitude

تضيف عينة التعليمات البرمجية التالية نافذة منبثقة إلى عنصر 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")
      }
    }
  }
}

إضافة نافذة منبثقة إلى علامة

تضيف عينة التعليمات البرمجية التالية نافذة منبثقة إلى علامة:

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()
        }
    }
  }
}