Files
letro-ios/ElementX/Sources/Other/MapLibre/LocationAnnotation.swift
Doug 52d823fb03 Update dependencies. (#4940)
* Minor dependency updates.

Plus SwiftSyntax 509 → 601

* Update MapLibre to v6.

* Update Sentry to v9.
2026-01-09 16:48:03 +00:00

52 lines
1.5 KiB
Swift

//
// Copyright 2025 Element Creations Ltd.
// Copyright 2023-2025 New Vector Ltd.
//
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
// Please see LICENSE files in the repository root for full details.
//
import Foundation
import MapLibre
import SwiftUI
final class LocationAnnotation: NSObject, MLNAnnotation {
let coordinate: CLLocationCoordinate2D
let anchorPoint: CGPoint
let view: AnyView
// MARK: - Setup
init(coordinate: CLLocationCoordinate2D,
anchorPoint: CGPoint = .init(x: 0.5, y: 0.5),
@ViewBuilder label: () -> some View) {
self.coordinate = coordinate
self.anchorPoint = anchorPoint
view = AnyView(label())
super.init()
}
}
final class LocationAnnotationView: MLNUserLocationAnnotationView {
// MARK: - Setup
override init(annotation: MLNAnnotation?, reuseIdentifier: String?) {
super.init(annotation: annotation, reuseIdentifier:
reuseIdentifier)
}
convenience init(annotation: LocationAnnotation) {
self.init(annotation: annotation, reuseIdentifier: "\(Self.self)")
let view: UIView = UIHostingController(rootView: annotation.view).view
view.backgroundColor = .clear
view.anchorPoint = annotation.anchorPoint
addSubview(view)
view.bounds.size = view.intrinsicContentSize
}
@available(*, unavailable)
required init?(coder: NSCoder) {
fatalError()
}
}