@lugg/maps 1.0.0-beta.7 → 1.0.0-beta.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,8 +5,6 @@ import android.graphics.Color
5
5
  import com.facebook.react.views.view.ReactViewGroup
6
6
  import com.google.android.gms.maps.model.LatLng
7
7
  import com.google.android.gms.maps.model.Polyline
8
- import com.google.android.gms.maps.model.StrokeStyle
9
- import com.google.android.gms.maps.model.StyleSpan
10
8
 
11
9
  interface LuggPolylineViewDelegate {
12
10
  fun polylineViewDidUpdate(polylineView: LuggPolylineView)
@@ -33,9 +31,6 @@ class LuggPolylineView(context: Context) : ReactViewGroup(context) {
33
31
  var zIndex: Float = 0f
34
32
  private set
35
33
 
36
- var cachedSpans: List<StyleSpan>? = null
37
- private set
38
-
39
34
  var delegate: LuggPolylineViewDelegate? = null
40
35
  var polyline: Polyline? = null
41
36
 
@@ -48,11 +43,7 @@ class LuggPolylineView(context: Context) : ReactViewGroup(context) {
48
43
  }
49
44
 
50
45
  fun setStrokeColors(colors: List<Int>) {
51
- val newColors = colors.ifEmpty { listOf(Color.BLACK) }
52
- if (newColors != strokeColors) {
53
- strokeColors = newColors
54
- cachedSpans = null
55
- }
46
+ strokeColors = colors.ifEmpty { listOf(Color.BLACK) }
56
47
  }
57
48
 
58
49
  fun setStrokeWidth(width: Float) {
@@ -71,18 +62,6 @@ class LuggPolylineView(context: Context) : ReactViewGroup(context) {
71
62
  zIndex = value
72
63
  }
73
64
 
74
- fun getOrCreateSpans(): List<StyleSpan> {
75
- cachedSpans?.let { return it }
76
-
77
- val segmentCount = coordinates.size - 1
78
- val spans = (0 until segmentCount).map { i ->
79
- val color = strokeColors[i % strokeColors.size]
80
- StyleSpan(StrokeStyle.colorBuilder(color).build())
81
- }
82
- cachedSpans = spans
83
- return spans
84
- }
85
-
86
65
  fun onAfterUpdateTransaction() {
87
66
  delegate?.polylineViewDidUpdate(this)
88
67
  }
@@ -15,6 +15,7 @@ import kotlin.math.min
15
15
  class PolylineAnimator {
16
16
  companion object {
17
17
  private const val MAX_ANIMATION_SPANS = 16
18
+ private const val MAX_GRADIENT_SPANS = 512
18
19
  }
19
20
 
20
21
  var polyline: Polyline? = null
@@ -255,10 +256,12 @@ class PolylineAnimator {
255
256
 
256
257
  private fun createGradientSpans(): List<StyleSpan> {
257
258
  val segmentCount = coordinates.size - 1
258
- return (0 until segmentCount).map { i ->
259
- val position = i.toFloat() / segmentCount
259
+ val spanCount = min(segmentCount, MAX_GRADIENT_SPANS)
260
+ val segmentsPerSpan = segmentCount.toDouble() / spanCount
261
+ return (0 until spanCount).map { i ->
262
+ val position = (i + 0.5f) / spanCount
260
263
  val color = colorAtGradientPosition(position)
261
- StyleSpan(StrokeStyle.colorBuilder(color).build())
264
+ StyleSpan(StrokeStyle.colorBuilder(color).build(), segmentsPerSpan)
262
265
  }
263
266
  }
264
267
 
@@ -2,6 +2,7 @@
2
2
  #import <QuartzCore/QuartzCore.h>
3
3
 
4
4
  static const NSUInteger kMaxAnimationSpans = 16;
5
+ static const NSUInteger kMaxGradientSpans = 512;
5
6
 
6
7
  @interface GMSDisplayLinkProxy : NSObject
7
8
  @property(nonatomic, weak) id target;
@@ -272,12 +273,14 @@ static const NSUInteger kMaxAnimationSpans = 16;
272
273
  - (NSArray<GMSStyleSpan *> *)createGradientSpans {
273
274
  NSMutableArray<GMSStyleSpan *> *spans = [NSMutableArray array];
274
275
  NSUInteger segmentCount = self.coordinates.count - 1;
276
+ NSUInteger spanCount = MIN(segmentCount, kMaxGradientSpans);
277
+ double segmentsPerSpan = (double)segmentCount / spanCount;
275
278
 
276
- for (NSUInteger i = 0; i < segmentCount; i++) {
277
- CGFloat position = (CGFloat)i / (CGFloat)segmentCount;
279
+ for (NSUInteger i = 0; i < spanCount; i++) {
280
+ CGFloat position = ((CGFloat)i + 0.5) / spanCount;
278
281
  UIColor *color = [self colorAtGradientPosition:position];
279
282
  GMSStrokeStyle *style = [GMSStrokeStyle solidColor:color];
280
- [spans addObject:[GMSStyleSpan spanWithStyle:style]];
283
+ [spans addObject:[GMSStyleSpan spanWithStyle:style segments:segmentsPerSpan]];
281
284
  }
282
285
 
283
286
  return spans;
@@ -71,10 +71,10 @@ export interface NativeProps extends ViewProps {
71
71
  initialZoom?: Double;
72
72
  minZoom?: Double;
73
73
  maxZoom?: Double;
74
- zoomEnabled?: boolean;
75
- scrollEnabled?: boolean;
76
- rotateEnabled?: boolean;
77
- pitchEnabled?: boolean;
74
+ zoomEnabled?: WithDefault<boolean, true>;
75
+ scrollEnabled?: WithDefault<boolean, true>;
76
+ rotateEnabled?: WithDefault<boolean, true>;
77
+ pitchEnabled?: WithDefault<boolean, true>;
78
78
  edgeInsets?: EdgeInsets;
79
79
  userLocationEnabled?: boolean;
80
80
  userLocationButtonEnabled?: boolean;
@@ -56,10 +56,10 @@ export interface NativeProps extends ViewProps {
56
56
  initialZoom?: Double;
57
57
  minZoom?: Double;
58
58
  maxZoom?: Double;
59
- zoomEnabled?: boolean;
60
- scrollEnabled?: boolean;
61
- rotateEnabled?: boolean;
62
- pitchEnabled?: boolean;
59
+ zoomEnabled?: WithDefault<boolean, true>;
60
+ scrollEnabled?: WithDefault<boolean, true>;
61
+ rotateEnabled?: WithDefault<boolean, true>;
62
+ pitchEnabled?: WithDefault<boolean, true>;
63
63
  edgeInsets?: EdgeInsets;
64
64
  userLocationEnabled?: boolean;
65
65
  userLocationButtonEnabled?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"LuggMapViewNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/fabric/LuggMapViewNativeComponent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,KAAK,EACV,MAAM,EACN,WAAW,EACX,kBAAkB,EACnB,MAAM,2CAA2C,CAAC;AAEnD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,KAAK,EAAE;QACL,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,KAAK,EAAE;QACL,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,CAAC;CACH;AAED,MAAM,WAAW,UAAU;CAAG;AAE9B,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,QAAQ,CAAC,EAAE,WAAW,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrD,OAAO,CAAC,EAAE,WAAW,CACnB,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,gBAAgB,EAClE,UAAU,CACX,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,WAAW,CAAC,WAAW,GAAG,WAAW,EAAE,WAAW,CAAC,CAAC;IACpE,mBAAmB,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,KAAK,CAAC,EAAE,WAAW,CAAC,QAAQ,GAAG,OAAO,GAAG,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC3D,eAAe,CAAC,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,EAAE,OAAO,CAAC,CAAC;IAC9D,UAAU,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC5C,cAAc,CAAC,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC;IACpD,YAAY,CAAC,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACnD,YAAY,CAAC,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACnD,OAAO,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC;CAC1C;AAED,KAAK,aAAa,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;AAEhD,UAAU,cAAc;IACtB,UAAU,EAAE,CACV,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,EACxC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,KACb,IAAI,CAAC;IACV,cAAc,EAAE,CACd,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,EACxC,WAAW,EAAE,UAAU,EAAE,EACzB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,MAAM,EACxB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,KACb,IAAI,CAAC;IACV,aAAa,EAAE,CACb,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,EACxC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,KACb,IAAI,CAAC;CACX;AAED,eAAO,MAAM,QAAQ,gBAEnB,CAAC;wBAIE,aAAa;AAFlB,wBAEmB"}
1
+ {"version":3,"file":"LuggMapViewNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/fabric/LuggMapViewNativeComponent.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lugg/maps",
3
- "version": "1.0.0-beta.7",
3
+ "version": "1.0.0-beta.9",
4
4
  "description": "Universal maps for React Native.",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -71,10 +71,10 @@ export interface NativeProps extends ViewProps {
71
71
  initialZoom?: Double;
72
72
  minZoom?: Double;
73
73
  maxZoom?: Double;
74
- zoomEnabled?: boolean;
75
- scrollEnabled?: boolean;
76
- rotateEnabled?: boolean;
77
- pitchEnabled?: boolean;
74
+ zoomEnabled?: WithDefault<boolean, true>;
75
+ scrollEnabled?: WithDefault<boolean, true>;
76
+ rotateEnabled?: WithDefault<boolean, true>;
77
+ pitchEnabled?: WithDefault<boolean, true>;
78
78
  edgeInsets?: EdgeInsets;
79
79
  userLocationEnabled?: boolean;
80
80
  userLocationButtonEnabled?: boolean;