Skip to content

Commit d7a5bb2

Browse files
evil159yunikkk
authored andcommitted
Add support for 2d puck pulsing on iOS
1 parent 0a60602 commit d7a5bb2

File tree

2 files changed

+31
-7
lines changed

2 files changed

+31
-7
lines changed

example/integration_test/location_test.dart

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,10 @@ void main() {
5454

5555
final updatedSettings = await location.getSettings();
5656
expect(updatedSettings.enabled, settings.enabled);
57+
expect(updatedSettings.pulsingEnabled, settings.pulsingEnabled);
58+
expect(updatedSettings.pulsingMaxRadius, settings.pulsingMaxRadius);
59+
expect(updatedSettings.pulsingColor, settings.pulsingColor);
5760
if (Platform.isAndroid) {
58-
expect(updatedSettings.pulsingEnabled, settings.pulsingEnabled);
59-
expect(updatedSettings.pulsingMaxRadius, settings.pulsingMaxRadius);
60-
// FIXME colors are parsed incorrectly
61-
// expect(updatedSettings.pulsingColor, settings.pulsingColor);
6261
expect(updatedSettings.layerAbove, settings.layerAbove);
6362
expect(updatedSettings.layerBelow, settings.layerBelow);
6463
}

ios/Classes/LocationController.swift

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,18 @@ extension LocationOptions {
8484
if let showAccuracyRing = settings.showAccuracyRing {
8585
configuration.showsAccuracyRing = showAccuracyRing.boolValue
8686
}
87+
if settings.pulsingEnabled?.boolValue ?? false {
88+
var pulsing = Puck2DConfiguration.Pulsing()
89+
90+
if let radius = settings.pulsingMaxRadius?.intValue {
91+
// -1 indicates "accuracy" mode(from Android)
92+
pulsing.radius = radius == -1 ? .accuracy : .constant(Double(radius))
93+
}
94+
if let color = settings.pulsingColor?.intValue {
95+
pulsing.color = uiColorFromHex(rgbValue: color)
96+
}
97+
configuration.pulsing = pulsing
98+
}
8799

88100
options.puckType = .puck2D(configuration)
89101
}
@@ -102,6 +114,9 @@ extension LocationOptions {
102114
var accuracyRingColor: NSNumber?
103115
var accuracyRingBorderColor: NSNumber?
104116
var showAccuracyRing: NSNumber?
117+
var pulsingEnabled: NSNumber?
118+
var pulsingRadius: NSNumber?
119+
var pulsingColor: NSNumber?
105120
let locationPuck2D = FLT_SETTINGSLocationPuck2D.init()
106121
let locationPuck3D = FLT_SETTINGSLocationPuck3D.init()
107122
let locationPuck = FLT_SETTINGSLocationPuck.make(with: locationPuck2D, locationPuck3D: locationPuck3D)
@@ -123,6 +138,16 @@ extension LocationOptions {
123138
let encoded = try! JSONEncoder().encode(scaleData)
124139
locationPuck2D.scaleExpression = String(data: encoded, encoding: .utf8)
125140
}
141+
if let pulsing = oldConfiguration.pulsing {
142+
pulsingEnabled = NSNumber(value: true)
143+
switch pulsing.radius {
144+
case .accuracy:
145+
pulsingRadius = NSNumber(value: -1)
146+
case .constant(let radius):
147+
pulsingRadius = NSNumber(value: radius)
148+
}
149+
pulsingColor = NSNumber(value: pulsing.color.rgb())
150+
}
126151
}
127152
if case .puck3D(let oldConfiguration) = self.puckType {
128153
locationPuck3D.modelUri = oldConfiguration.model.uri?.absoluteString
@@ -144,9 +169,9 @@ extension LocationOptions {
144169

145170
return FLT_SETTINGSLocationComponentSettings.make(
146171
withEnabled: enabled,
147-
pulsingEnabled: nil,
148-
pulsingColor: nil,
149-
pulsingMaxRadius: nil,
172+
pulsingEnabled: pulsingEnabled,
173+
pulsingColor: pulsingColor,
174+
pulsingMaxRadius: pulsingRadius,
150175
showAccuracyRing: showAccuracyRing,
151176
accuracyRingColor: accuracyRingColor,
152177
accuracyRingBorderColor: accuracyRingBorderColor,

0 commit comments

Comments
 (0)