|
| 1 | +import MapLibre |
| 2 | +import SwiftUI |
| 3 | + |
| 4 | +/// An abstraction of the [MLNUserLocationAnnotationViewStyle](https://maplibre.org/maplibre-native/ios/latest/documentation/maplibre/mlnuserlocationannotationviewstyle/) |
| 5 | +public struct MapUserAnnotationStyle { |
| 6 | + /// The halo border color for the approximate view. |
| 7 | + var approximateHaloBorderColor: Color |
| 8 | + |
| 9 | + /// The halo border width for the approximate view. The default value of this property is equal to 2.0 |
| 10 | + var approximateHaloBorderWidth: CGFloat |
| 11 | + |
| 12 | + /// The halo fill color for the approximate view. |
| 13 | + var approximateHaloFillColor: Color |
| 14 | + |
| 15 | + /// The halo opacity for the approximate view. Set any value between 0.0 and 1.0 The default value of this property |
| 16 | + /// is equal to 0.15 |
| 17 | + var approximateHaloOpacity: CGFloat |
| 18 | + |
| 19 | + /// The fill color for the puck view. |
| 20 | + var haloFillColor: Color |
| 21 | + |
| 22 | + /// The fill color for the arrow puck. |
| 23 | + var puckArrowFillColor: Color |
| 24 | + |
| 25 | + /// The fill color for the puck view. |
| 26 | + var puckFillColor: Color |
| 27 | + |
| 28 | + /// The shadow color for the puck view. |
| 29 | + var puckShadowColor: Color |
| 30 | + |
| 31 | + /// The shadow opacity for the puck view. Set any value between 0.0 and 1.0. The default value of this property is |
| 32 | + /// equal to 0.25 |
| 33 | + var puckShadowOpacity: CGFloat |
| 34 | + |
| 35 | + /// Create a custom user location annotation style. |
| 36 | + /// |
| 37 | + /// - Parameters: |
| 38 | + /// - approximateHaloBorderColor: The halo border color for the approximate view. |
| 39 | + /// - approximateHaloBorderWidth: The halo border width for the approximate view. The default value of this |
| 40 | + /// property is equal to 2.0 |
| 41 | + /// - approximateHaloFillColor: The halo fill color for the approximate view. |
| 42 | + /// - approximateHaloOpacity: The halo opacity for the approximate view. Set any value between 0.0 and 1.0 The |
| 43 | + /// default value of this property is equal to 0.15 |
| 44 | + /// - haloFillColor: The fill color for the puck view. |
| 45 | + /// - puckArrowFillColor: The fill color for the arrow puck. |
| 46 | + /// - puckFillColor: The fill color for the puck view. |
| 47 | + /// - puckShadowColor: The shadow color for the puck view. |
| 48 | + /// - puckShadowOpacity: The shadow opacity for the puck view. Set any value between 0.0 and 1.0. The default |
| 49 | + /// value of this property is equal to 0.25 |
| 50 | + public init( |
| 51 | + approximateHaloBorderColor: Color = .white, |
| 52 | + approximateHaloBorderWidth: CGFloat = 2.0, |
| 53 | + approximateHaloFillColor: Color = .primary, |
| 54 | + approximateHaloOpacity: CGFloat = 0.15, |
| 55 | + haloFillColor: Color = .primary, |
| 56 | + puckArrowFillColor: Color = .primary, |
| 57 | + puckFillColor: Color = .white, |
| 58 | + puckShadowColor: Color = .black, |
| 59 | + puckShadowOpacity: CGFloat = 0.25 |
| 60 | + ) { |
| 61 | + self.approximateHaloBorderColor = approximateHaloBorderColor |
| 62 | + self.approximateHaloBorderWidth = approximateHaloBorderWidth |
| 63 | + self.approximateHaloFillColor = approximateHaloFillColor |
| 64 | + self.approximateHaloOpacity = approximateHaloOpacity |
| 65 | + self.haloFillColor = haloFillColor |
| 66 | + self.puckArrowFillColor = puckArrowFillColor |
| 67 | + self.puckFillColor = puckFillColor |
| 68 | + self.puckShadowColor = puckShadowColor |
| 69 | + self.puckShadowOpacity = puckShadowOpacity |
| 70 | + } |
| 71 | +} |
| 72 | + |
| 73 | +extension MapUserAnnotationStyle { |
| 74 | + /// The MLN value used on the underlying MLNMapView |
| 75 | + var value: MLNUserLocationAnnotationViewStyle { |
| 76 | + let value = MLNUserLocationAnnotationViewStyle() |
| 77 | + value.approximateHaloBorderColor = UIColor(approximateHaloBorderColor) |
| 78 | + value.approximateHaloBorderWidth = approximateHaloBorderWidth |
| 79 | + value.approximateHaloFillColor = UIColor(approximateHaloFillColor) |
| 80 | + value.approximateHaloOpacity = approximateHaloOpacity |
| 81 | + value.haloFillColor = UIColor(haloFillColor) |
| 82 | + value.puckArrowFillColor = UIColor(puckArrowFillColor) |
| 83 | + value.puckFillColor = UIColor(puckFillColor) |
| 84 | + value.puckShadowColor = UIColor(puckShadowColor) |
| 85 | + value.puckShadowOpacity = puckShadowOpacity |
| 86 | + return value |
| 87 | + } |
| 88 | +} |
0 commit comments