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

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

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

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

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

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

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

يمكن تخصيص محتوى النافذة المنبثقة باستخدام طرق عرض SwiftUI. يمكنك توفير تنسيقات مخصّصة من خلال تمرير دالة إغلاق View builder إلى الكيان 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(center: .init(latitude: 37.8270, longitude: -122.4230)),
      mode: .hybrid) {
        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(center: .init(latitude: 37.7955, longitude: -122.3937)),
      mode: .hybrid
    ) {
      Marker3D(position: ferryBuilding)
        .popover(isOpen: $isOpen) {
          Text("Ferry Building")
        }
        .onTap {
          isOpen.toggle()
        }
    }
  }
}