@maplibre/maplibre-react-native 10.1.0 → 10.1.1
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.
- package/ios/MLRN/CameraStop.h +1 -1
- package/ios/MLRN/CameraStop.m +58 -60
- package/ios/MLRN/CameraUpdateItem.h +2 -1
- package/ios/MLRN/CameraUpdateItem.m +132 -132
- package/ios/MLRN/CameraUpdateQueue.m +43 -47
- package/ios/MLRN/FilterParser.h +1 -1
- package/ios/MLRN/FilterParser.m +5 -6
- package/ios/MLRN/MLRNBackgroundLayer.m +10 -9
- package/ios/MLRN/MLRNBackgroundLayerManager.m +4 -5
- package/ios/MLRN/MLRNCallout.h +1 -1
- package/ios/MLRN/MLRNCallout.m +37 -36
- package/ios/MLRN/MLRNCalloutManager.m +2 -3
- package/ios/MLRN/MLRNCamera.h +1 -1
- package/ios/MLRN/MLRNCamera.m +169 -182
- package/ios/MLRN/MLRNCameraManager.m +4 -6
- package/ios/MLRN/MLRNCircleLayer.m +17 -14
- package/ios/MLRN/MLRNCircleLayerManager.m +4 -5
- package/ios/MLRN/MLRNCustomHeaders.h +2 -2
- package/ios/MLRN/MLRNCustomHeaders.m +63 -63
- package/ios/MLRN/MLRNEvent.h +3 -3
- package/ios/MLRN/MLRNEvent.m +19 -24
- package/ios/MLRN/MLRNEventProtocol.h +1 -1
- package/ios/MLRN/MLRNFillExtrusionLayer.m +18 -14
- package/ios/MLRN/MLRNFillExtrusionLayerManager.m +4 -5
- package/ios/MLRN/MLRNFillLayer.m +16 -14
- package/ios/MLRN/MLRNFillLayerManager.m +4 -5
- package/ios/MLRN/MLRNHeatmapLayer.m +17 -14
- package/ios/MLRN/MLRNHeatmapLayerManager.m +4 -5
- package/ios/MLRN/MLRNImageQueue.h +4 -1
- package/ios/MLRN/MLRNImageQueue.m +29 -32
- package/ios/MLRN/MLRNImageQueueOperation.h +1 -1
- package/ios/MLRN/MLRNImageQueueOperation.m +92 -91
- package/ios/MLRN/MLRNImageSource.m +36 -38
- package/ios/MLRN/MLRNImageSourceManager.m +2 -3
- package/ios/MLRN/MLRNImageUtils.h +3 -3
- package/ios/MLRN/MLRNImageUtils.m +15 -14
- package/ios/MLRN/MLRNImages.h +0 -1
- package/ios/MLRN/MLRNImages.m +89 -91
- package/ios/MLRN/MLRNImagesManager.m +4 -5
- package/ios/MLRN/MLRNLayer.h +9 -11
- package/ios/MLRN/MLRNLayer.m +170 -182
- package/ios/MLRN/MLRNLight.m +21 -23
- package/ios/MLRN/MLRNLightManager.m +2 -3
- package/ios/MLRN/MLRNLineLayer.m +17 -15
- package/ios/MLRN/MLRNLineLayerManager.m +4 -6
- package/ios/MLRN/MLRNLocation.h +1 -1
- package/ios/MLRN/MLRNLocation.m +16 -17
- package/ios/MLRN/MLRNLocationManager.m +109 -124
- package/ios/MLRN/MLRNLocationManagerDelegate.h +3 -3
- package/ios/MLRN/MLRNLocationModule.h +1 -1
- package/ios/MLRN/MLRNLocationModule.m +40 -55
- package/ios/MLRN/MLRNLogging.h +1 -4
- package/ios/MLRN/MLRNLogging.m +84 -89
- package/ios/MLRN/MLRNMapTouchEvent.h +2 -2
- package/ios/MLRN/MLRNMapTouchEvent.m +50 -49
- package/ios/MLRN/MLRNMapView.h +43 -36
- package/ios/MLRN/MLRNMapView.m +409 -440
- package/ios/MLRN/MLRNMapViewManager.m +489 -502
- package/ios/MLRN/MLRNModule.h +1 -1
- package/ios/MLRN/MLRNModule.m +111 -105
- package/ios/MLRN/MLRNNativeUserLocation.m +24 -27
- package/ios/MLRN/MLRNNativeUserLocationManager.m +4 -8
- package/ios/MLRN/MLRNOfflineModule.h +1 -1
- package/ios/MLRN/MLRNOfflineModule.m +416 -421
- package/ios/MLRN/MLRNPointAnnotation.h +2 -2
- package/ios/MLRN/MLRNPointAnnotation.m +154 -175
- package/ios/MLRN/MLRNPointAnnotationManager.m +2 -3
- package/ios/MLRN/MLRNRasterLayer.m +16 -12
- package/ios/MLRN/MLRNRasterLayerManager.m +4 -5
- package/ios/MLRN/MLRNRasterSource.m +21 -17
- package/ios/MLRN/MLRNRasterSourceManager.m +2 -3
- package/ios/MLRN/MLRNShapeSource.h +17 -16
- package/ios/MLRN/MLRNShapeSource.m +94 -102
- package/ios/MLRN/MLRNShapeSourceManager.h +2 -2
- package/ios/MLRN/MLRNShapeSourceManager.m +86 -90
- package/ios/MLRN/MLRNSnapshotModule.h +1 -1
- package/ios/MLRN/MLRNSnapshotModule.m +51 -53
- package/ios/MLRN/MLRNSource.h +12 -12
- package/ios/MLRN/MLRNSource.m +82 -88
- package/ios/MLRN/MLRNStyleValue.h +1 -1
- package/ios/MLRN/MLRNStyleValue.m +128 -128
- package/ios/MLRN/MLRNSymbolLayer.m +17 -13
- package/ios/MLRN/MLRNSymbolLayerManager.m +4 -5
- package/ios/MLRN/MLRNTileSource.h +1 -1
- package/ios/MLRN/MLRNTileSource.m +21 -20
- package/ios/MLRN/MLRNUserLocation.h +1 -1
- package/ios/MLRN/MLRNUserLocation.m +10 -12
- package/ios/MLRN/MLRNUtils.h +18 -11
- package/ios/MLRN/MLRNUtils.m +168 -160
- package/ios/MLRN/MLRNVectorLayer.m +28 -34
- package/ios/MLRN/MLRNVectorSource.h +3 -1
- package/ios/MLRN/MLRNVectorSource.m +14 -11
- package/ios/MLRN/MLRNVectorSourceManager.h +2 -2
- package/ios/MLRN/MLRNVectorSourceManager.m +36 -39
- package/ios/MLRN/ViewManager.h +1 -1
- package/ios/MLRN/ViewManager.m +29 -35
- package/lib/commonjs/components/MarkerView.js +1 -1
- package/lib/commonjs/components/UserLocation.js +8 -38
- package/lib/commonjs/components/UserLocation.js.map +1 -1
- package/lib/commonjs/components/UserLocationPuck.js +52 -0
- package/lib/commonjs/components/UserLocationPuck.js.map +1 -0
- package/lib/commonjs/components/{HeadingIndicator.js → UserLocationPuckHeading.js} +12 -9
- package/lib/commonjs/components/UserLocationPuckHeading.js.map +1 -0
- package/lib/module/components/MarkerView.js +1 -1
- package/lib/module/components/UserLocation.js +7 -36
- package/lib/module/components/UserLocation.js.map +1 -1
- package/lib/module/components/UserLocationPuck.js +48 -0
- package/lib/module/components/UserLocationPuck.js.map +1 -0
- package/lib/module/components/{HeadingIndicator.js → UserLocationPuckHeading.js} +11 -7
- package/lib/module/components/UserLocationPuckHeading.js.map +1 -0
- package/lib/typescript/commonjs/src/components/MarkerView.d.ts +1 -1
- package/lib/typescript/commonjs/src/components/UserLocation.d.ts +0 -1
- package/lib/typescript/commonjs/src/components/UserLocation.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/components/UserLocationPuck.d.ts +9 -0
- package/lib/typescript/commonjs/src/components/UserLocationPuck.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/components/UserLocationPuckHeading.d.ts +9 -0
- package/lib/typescript/commonjs/src/components/UserLocationPuckHeading.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/utils/animated/AbstractAnimatedCoordinates.d.ts +0 -1
- package/lib/typescript/commonjs/src/utils/animated/AbstractAnimatedCoordinates.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/utils/animated/AnimatedExtractCoordinateFromArray.d.ts +0 -1
- package/lib/typescript/commonjs/src/utils/animated/AnimatedExtractCoordinateFromArray.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/utils/animated/AnimatedPoint.d.ts +0 -1
- package/lib/typescript/commonjs/src/utils/animated/AnimatedPoint.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/utils/animated/AnimatedShape.d.ts +0 -1
- package/lib/typescript/commonjs/src/utils/animated/AnimatedShape.d.ts.map +1 -1
- package/lib/typescript/module/src/components/MarkerView.d.ts +1 -1
- package/lib/typescript/module/src/components/UserLocation.d.ts +0 -1
- package/lib/typescript/module/src/components/UserLocation.d.ts.map +1 -1
- package/lib/typescript/module/src/components/UserLocationPuck.d.ts +9 -0
- package/lib/typescript/module/src/components/UserLocationPuck.d.ts.map +1 -0
- package/lib/typescript/module/src/components/UserLocationPuckHeading.d.ts +9 -0
- package/lib/typescript/module/src/components/UserLocationPuckHeading.d.ts.map +1 -0
- package/lib/typescript/module/src/utils/animated/AbstractAnimatedCoordinates.d.ts +0 -1
- package/lib/typescript/module/src/utils/animated/AbstractAnimatedCoordinates.d.ts.map +1 -1
- package/lib/typescript/module/src/utils/animated/AnimatedExtractCoordinateFromArray.d.ts +0 -1
- package/lib/typescript/module/src/utils/animated/AnimatedExtractCoordinateFromArray.d.ts.map +1 -1
- package/lib/typescript/module/src/utils/animated/AnimatedPoint.d.ts +0 -1
- package/lib/typescript/module/src/utils/animated/AnimatedPoint.d.ts.map +1 -1
- package/lib/typescript/module/src/utils/animated/AnimatedShape.d.ts +0 -1
- package/lib/typescript/module/src/utils/animated/AnimatedShape.d.ts.map +1 -1
- package/package.json +8 -8
- package/src/components/MarkerView.tsx +1 -1
- package/src/components/UserLocation.tsx +13 -51
- package/src/components/UserLocationPuck.tsx +62 -0
- package/src/components/UserLocationPuckHeading.tsx +33 -0
- package/lib/commonjs/components/HeadingIndicator.js.map +0 -1
- package/lib/module/components/HeadingIndicator.js.map +0 -1
- package/lib/typescript/commonjs/src/components/HeadingIndicator.d.ts +0 -7
- package/lib/typescript/commonjs/src/components/HeadingIndicator.d.ts.map +0 -1
- package/lib/typescript/module/src/components/HeadingIndicator.d.ts +0 -7
- package/lib/typescript/module/src/components/HeadingIndicator.d.ts.map +0 -1
- package/src/components/HeadingIndicator.tsx +0 -26
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#import <React/RCTUIManager.h>
|
|
2
2
|
|
|
3
|
-
#import "MLRNVectorSourceManager.h"
|
|
4
3
|
#import "MLRNVectorSource.h"
|
|
4
|
+
#import "MLRNVectorSourceManager.h"
|
|
5
5
|
|
|
6
6
|
#import "FilterParser.h"
|
|
7
7
|
|
|
@@ -11,9 +11,8 @@ RCT_EXPORT_MODULE(MLRNVectorSource);
|
|
|
11
11
|
|
|
12
12
|
RCT_EXPORT_VIEW_PROPERTY(id, NSString);
|
|
13
13
|
|
|
14
|
-
- (UIView*)view
|
|
15
|
-
|
|
16
|
-
return [MLRNVectorSource new];
|
|
14
|
+
- (UIView *)view {
|
|
15
|
+
return [MLRNVectorSource new];
|
|
17
16
|
}
|
|
18
17
|
|
|
19
18
|
RCT_EXPORT_VIEW_PROPERTY(url, NSString)
|
|
@@ -28,44 +27,42 @@ RCT_EXPORT_VIEW_PROPERTY(hasPressListener, BOOL)
|
|
|
28
27
|
RCT_REMAP_VIEW_PROPERTY(onMapboxVectorSourcePress, onPress, RCTBubblingEventBlock)
|
|
29
28
|
RCT_EXPORT_VIEW_PROPERTY(hitbox, NSDictionary)
|
|
30
29
|
|
|
30
|
+
RCT_EXPORT_METHOD(features : (nonnull NSNumber *)reactTag withLayerIDs : (NSArray<NSString *> *)
|
|
31
|
+
layerIDs withFilter : (NSArray<NSDictionary<NSString *, id> *> *)
|
|
32
|
+
filter resolver : (RCTPromiseResolveBlock)
|
|
33
|
+
resolve rejecter : (RCTPromiseRejectBlock)reject) {
|
|
34
|
+
[self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *manager,
|
|
35
|
+
NSDictionary<NSNumber *, UIView *> *viewRegistry) {
|
|
36
|
+
UIView *view = viewRegistry[reactTag];
|
|
37
|
+
MLRNVectorSource *vectorSource = nil;
|
|
38
|
+
|
|
39
|
+
if ([view isKindOfClass:[MLRNVectorSource class]]) {
|
|
40
|
+
vectorSource = (MLRNVectorSource *)view;
|
|
41
|
+
} else {
|
|
42
|
+
RCTLogError(@"Invalid react tag, could not find MLRNMapView");
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
NSSet *layerIDSet = nil;
|
|
47
|
+
if (layerIDs != nil && layerIDs.count > 0) {
|
|
48
|
+
layerIDSet = [NSSet setWithArray:layerIDs];
|
|
49
|
+
}
|
|
50
|
+
NSPredicate *predicate = [FilterParser parse:filter];
|
|
51
|
+
NSArray<id<MLNFeature>> *shapes =
|
|
52
|
+
[vectorSource featuresInSourceLayersWithIdentifiers:layerIDSet predicate:predicate];
|
|
53
|
+
|
|
54
|
+
NSMutableArray<NSDictionary *> *features =
|
|
55
|
+
[[NSMutableArray alloc] initWithCapacity:shapes.count];
|
|
56
|
+
for (int i = 0; i < shapes.count; i++) {
|
|
57
|
+
[features addObject:shapes[i].geoJSONDictionary];
|
|
58
|
+
}
|
|
31
59
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
withFilter:(NSArray<NSDictionary<NSString *, id> *> *)filter
|
|
35
|
-
resolver:(RCTPromiseResolveBlock)resolve
|
|
36
|
-
rejecter:(RCTPromiseRejectBlock)reject)
|
|
37
|
-
{
|
|
38
|
-
[self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *manager, NSDictionary<NSNumber*, UIView*> *viewRegistry) {
|
|
39
|
-
MLRNVectorSource* vectorSource = viewRegistry[reactTag];
|
|
40
|
-
|
|
41
|
-
if (![vectorSource isKindOfClass:[MLRNVectorSource class]]) {
|
|
42
|
-
RCTLogError(@"Invalid react tag, could not find MLRNMapView");
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
NSSet* layerIDSet = nil;
|
|
47
|
-
if (layerIDs != nil && layerIDs.count > 0) {
|
|
48
|
-
layerIDSet = [NSSet setWithArray:layerIDs];
|
|
49
|
-
}
|
|
50
|
-
NSPredicate* predicate = [FilterParser parse:filter];
|
|
51
|
-
NSArray<id<MLNFeature>> *shapes = [vectorSource
|
|
52
|
-
featuresInSourceLayersWithIdentifiers: layerIDSet
|
|
53
|
-
predicate: predicate];
|
|
54
|
-
|
|
55
|
-
NSMutableArray<NSDictionary*> *features = [[NSMutableArray alloc] initWithCapacity:shapes.count];
|
|
56
|
-
for (int i = 0; i < shapes.count; i++) {
|
|
57
|
-
[features addObject:shapes[i].geoJSONDictionary];
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
resolve(@{
|
|
61
|
-
@"data": @{ @"type": @"FeatureCollection", @"features": features }
|
|
62
|
-
});
|
|
63
|
-
}];
|
|
60
|
+
resolve(@{@"data" : @{@"type" : @"FeatureCollection", @"features" : features}});
|
|
61
|
+
}];
|
|
64
62
|
}
|
|
65
63
|
|
|
66
|
-
RCT_EXPORT_METHOD(addEvent:(NSString *)name location:(NSString *)location)
|
|
67
|
-
|
|
68
|
-
RCTLogInfo(@"Pretending to create an event %@ at %@", name, location);
|
|
64
|
+
RCT_EXPORT_METHOD(addEvent : (NSString *)name location : (NSString *)location) {
|
|
65
|
+
RCTLogInfo(@"Pretending to create an event %@ at %@", name, location);
|
|
69
66
|
}
|
|
70
67
|
|
|
71
68
|
@end
|
package/ios/MLRN/ViewManager.h
CHANGED
package/ios/MLRN/ViewManager.m
CHANGED
|
@@ -1,55 +1,49 @@
|
|
|
1
1
|
#import "ViewManager.h"
|
|
2
2
|
|
|
3
|
-
@implementation ViewManager
|
|
4
|
-
|
|
5
|
-
NSMutableDictionary<NSString*, NSNumber*> *eventTimestampCache;
|
|
3
|
+
@implementation ViewManager {
|
|
4
|
+
NSMutableDictionary<NSString *, NSNumber *> *eventTimestampCache;
|
|
6
5
|
}
|
|
7
6
|
|
|
8
|
-
+ (BOOL)requiresMainQueueSetup
|
|
9
|
-
|
|
10
|
-
return YES;
|
|
7
|
+
+ (BOOL)requiresMainQueueSetup {
|
|
8
|
+
return YES;
|
|
11
9
|
}
|
|
12
10
|
|
|
13
|
-
+ (NSString *)moduleName
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return @"RCTViewManager";
|
|
11
|
+
+ (NSString *)moduleName {
|
|
12
|
+
// Hack, to prevent JS from throwing a useless warning
|
|
13
|
+
return @"RCTViewManager";
|
|
17
14
|
}
|
|
18
15
|
|
|
19
16
|
static NSTimeInterval EVENT_THROTTLE_S = 0.01;
|
|
20
17
|
|
|
21
|
-
- (instancetype)init
|
|
22
|
-
{
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
return self;
|
|
18
|
+
- (instancetype)init {
|
|
19
|
+
if (self = [super init]) {
|
|
20
|
+
eventTimestampCache = [[NSMutableDictionary alloc] init];
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return self;
|
|
28
24
|
}
|
|
29
25
|
|
|
30
|
-
- (void)fireEvent:(MLRNEvent*)event withCallback:(RCTBubblingEventBlock)callback
|
|
31
|
-
{
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
callback([event toJSON]);
|
|
39
|
-
}
|
|
26
|
+
- (void)fireEvent:(MLRNEvent *)event withCallback:(RCTBubblingEventBlock)callback {
|
|
27
|
+
if (![self _shouldDropEvent:event]) {
|
|
28
|
+
NSString *cacheKey = [self _getCacheKey:event];
|
|
29
|
+
NSTimeInterval now = [[NSDate date] timeIntervalSince1970];
|
|
30
|
+
[eventTimestampCache setObject:[NSNumber numberWithDouble:now] forKey:cacheKey];
|
|
31
|
+
|
|
32
|
+
if (callback != nil) {
|
|
33
|
+
callback([event toJSON]);
|
|
40
34
|
}
|
|
35
|
+
}
|
|
41
36
|
}
|
|
42
37
|
|
|
43
|
-
- (BOOL)_shouldDropEvent:(MLRNEvent *)event
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
38
|
+
- (BOOL)_shouldDropEvent:(MLRNEvent *)event {
|
|
39
|
+
NSString *cacheKey = [self _getCacheKey:event];
|
|
40
|
+
NSNumber *lastTimestamp = [eventTimestampCache objectForKey:cacheKey];
|
|
41
|
+
return lastTimestamp != nil &&
|
|
42
|
+
(event.timestamp - [lastTimestamp doubleValue]) <= EVENT_THROTTLE_S;
|
|
48
43
|
}
|
|
49
44
|
|
|
50
|
-
- (NSString*)_getCacheKey:(MLRNEvent*)event
|
|
51
|
-
|
|
52
|
-
return event.type;
|
|
45
|
+
- (NSString *)_getCacheKey:(MLRNEvent *)event {
|
|
46
|
+
return event.type;
|
|
53
47
|
}
|
|
54
48
|
|
|
55
49
|
@end
|
|
@@ -16,7 +16,7 @@ const NATIVE_MODULE_NAME = exports.NATIVE_MODULE_NAME = "MLRNMarkerView";
|
|
|
16
16
|
*
|
|
17
17
|
* If you have static view consider using PointAnnotation or SymbolLayer they'll offer much better performance
|
|
18
18
|
* .
|
|
19
|
-
* This is based on [MakerView plugin](https://
|
|
19
|
+
* This is based on [MakerView plugin](https://github.com/maplibre/maplibre-plugins-android/tree/main/plugin-markerview) on Android
|
|
20
20
|
* and PointAnnotation on iOS.
|
|
21
21
|
*/
|
|
22
22
|
const MarkerView = ({
|
|
@@ -3,47 +3,14 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.UserLocationRenderMode = exports.UserLocation = void 0;
|
|
7
7
|
var _react = require("react");
|
|
8
8
|
var _Annotation = require("./Annotation.js");
|
|
9
|
-
var _CircleLayer = require("./CircleLayer.js");
|
|
10
|
-
var _HeadingIndicator = require("./HeadingIndicator.js");
|
|
11
9
|
var _NativeUserLocation = require("./NativeUserLocation.js");
|
|
10
|
+
var _UserLocationPuck = require("./UserLocationPuck.js");
|
|
12
11
|
var _LocationManager = require("../modules/location/LocationManager.js");
|
|
13
12
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
|
-
const
|
|
15
|
-
const layerStyles = {
|
|
16
|
-
pluse: {
|
|
17
|
-
circleRadius: 15,
|
|
18
|
-
circleColor: mapboxBlue,
|
|
19
|
-
circleOpacity: 0.2,
|
|
20
|
-
circlePitchAlignment: "map"
|
|
21
|
-
},
|
|
22
|
-
background: {
|
|
23
|
-
circleRadius: 9,
|
|
24
|
-
circleColor: "#fff",
|
|
25
|
-
circlePitchAlignment: "map"
|
|
26
|
-
},
|
|
27
|
-
foreground: {
|
|
28
|
-
circleRadius: 6,
|
|
29
|
-
circleColor: mapboxBlue,
|
|
30
|
-
circlePitchAlignment: "map"
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
const normalIcon = (showsUserHeadingIndicator, heading) => [/*#__PURE__*/(0, _jsxRuntime.jsx)(_CircleLayer.CircleLayer, {
|
|
34
|
-
id: "mapboxUserLocationPluseCircle",
|
|
35
|
-
style: layerStyles.pluse
|
|
36
|
-
}, "mapboxUserLocationPluseCircle"), /*#__PURE__*/(0, _jsxRuntime.jsx)(_CircleLayer.CircleLayer, {
|
|
37
|
-
id: "mapboxUserLocationWhiteCircle",
|
|
38
|
-
style: layerStyles.background
|
|
39
|
-
}, "mapboxUserLocationWhiteCircle"), /*#__PURE__*/(0, _jsxRuntime.jsx)(_CircleLayer.CircleLayer, {
|
|
40
|
-
id: "mapboxUserLocationBlueCicle",
|
|
41
|
-
aboveLayerID: "mapboxUserLocationWhiteCircle",
|
|
42
|
-
style: layerStyles.foreground
|
|
43
|
-
}, "mapboxUserLocationBlueCicle"), ...(showsUserHeadingIndicator && heading ? [(0, _HeadingIndicator.HeadingIndicator)({
|
|
44
|
-
heading
|
|
45
|
-
})] : [])];
|
|
46
|
-
exports.normalIcon = normalIcon;
|
|
13
|
+
const USER_LOCATION_SOURCE_ID = "mlrn-user-location";
|
|
47
14
|
let UserLocationRenderMode = exports.UserLocationRenderMode = /*#__PURE__*/function (UserLocationRenderMode) {
|
|
48
15
|
UserLocationRenderMode["Native"] = "native";
|
|
49
16
|
UserLocationRenderMode["Normal"] = "normal";
|
|
@@ -174,13 +141,16 @@ const UserLocation = exports.UserLocation = /*#__PURE__*/(0, _react.memo)(/*#__P
|
|
|
174
141
|
}
|
|
175
142
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Annotation.Annotation, {
|
|
176
143
|
animated: animated,
|
|
177
|
-
id:
|
|
144
|
+
id: USER_LOCATION_SOURCE_ID,
|
|
178
145
|
onPress: onPress,
|
|
179
146
|
coordinates: userLocationState.coordinates,
|
|
180
147
|
style: {
|
|
181
148
|
iconRotate: userLocationState.heading
|
|
182
149
|
},
|
|
183
|
-
children: children ||
|
|
150
|
+
children: children || /*#__PURE__*/(0, _jsxRuntime.jsx)(_UserLocationPuck.UserLocationPuck, {
|
|
151
|
+
sourceID: USER_LOCATION_SOURCE_ID,
|
|
152
|
+
heading: showsUserHeadingIndicator ? userLocationState.heading : undefined
|
|
153
|
+
})
|
|
184
154
|
});
|
|
185
155
|
}));
|
|
186
156
|
//# sourceMappingURL=UserLocation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_Annotation","
|
|
1
|
+
{"version":3,"names":["_react","require","_Annotation","_NativeUserLocation","_UserLocationPuck","_LocationManager","_jsxRuntime","USER_LOCATION_SOURCE_ID","UserLocationRenderMode","exports","UserLocation","memo","forwardRef","animated","visible","showsUserHeadingIndicator","minDisplacement","renderMode","androidRenderMode","androidPreferredFramesPerSecond","children","onUpdate","onPress","ref","_isMounted","useRef","locationManagerRunning","userLocationState","setUserLocationState","useState","shouldShowUserLocation","useImperativeHandle","setLocationManager","needsLocationManagerRunning","_onLocationUpdate","useEffect","current","running","then","Native","LocationManager","setMinDisplacement","addListener","location","getLastKnownLocation","removeListener","Normal","coordinates","heading","coords","longitude","latitude","props","iosShowsUserHeadingIndicator","jsx","NativeUserLocation","Annotation","id","style","iconRotate","UserLocationPuck","sourceID","undefined"],"sourceRoot":"../../../src","sources":["components/UserLocation.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.UserLocationPuck = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _CircleLayer = require("./CircleLayer.js");
|
|
9
|
+
var _UserLocationPuckHeading = require("./UserLocationPuckHeading.js");
|
|
10
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
+
const blue = "#33B5E5";
|
|
12
|
+
const layerStyles = {
|
|
13
|
+
pulse: {
|
|
14
|
+
circleRadius: 15,
|
|
15
|
+
circleColor: blue,
|
|
16
|
+
circleOpacity: 0.2,
|
|
17
|
+
circlePitchAlignment: "map"
|
|
18
|
+
},
|
|
19
|
+
white: {
|
|
20
|
+
circleRadius: 9,
|
|
21
|
+
circleColor: "#fff",
|
|
22
|
+
circlePitchAlignment: "map"
|
|
23
|
+
},
|
|
24
|
+
blue: {
|
|
25
|
+
circleRadius: 6,
|
|
26
|
+
circleColor: blue,
|
|
27
|
+
circlePitchAlignment: "map"
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
const UserLocationPuck = exports.UserLocationPuck = /*#__PURE__*/(0, _react.memo)(({
|
|
31
|
+
sourceID,
|
|
32
|
+
heading
|
|
33
|
+
}) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
34
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_CircleLayer.CircleLayer, {
|
|
35
|
+
id: "mlrn-user-location-puck-pulse",
|
|
36
|
+
sourceID: sourceID,
|
|
37
|
+
style: layerStyles.pulse
|
|
38
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_CircleLayer.CircleLayer, {
|
|
39
|
+
id: "mlrn-user-location-puck-white",
|
|
40
|
+
sourceID: sourceID,
|
|
41
|
+
style: layerStyles.white
|
|
42
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_CircleLayer.CircleLayer, {
|
|
43
|
+
id: "mlrn-user-location-puck-blue",
|
|
44
|
+
sourceID: sourceID,
|
|
45
|
+
style: layerStyles.blue
|
|
46
|
+
}), typeof heading === "number" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_UserLocationPuckHeading.UserLocationPuckHeading, {
|
|
47
|
+
sourceID: sourceID,
|
|
48
|
+
belowLayerID: "mlrn-user-location-puck-white",
|
|
49
|
+
heading: heading
|
|
50
|
+
})]
|
|
51
|
+
}));
|
|
52
|
+
//# sourceMappingURL=UserLocationPuck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_CircleLayer","_UserLocationPuckHeading","_jsxRuntime","blue","layerStyles","pulse","circleRadius","circleColor","circleOpacity","circlePitchAlignment","white","UserLocationPuck","exports","memo","sourceID","heading","jsxs","Fragment","children","jsx","CircleLayer","id","style","UserLocationPuckHeading","belowLayerID"],"sourceRoot":"../../../src","sources":["components/UserLocationPuck.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,wBAAA,GAAAF,OAAA;AAAoE,IAAAG,WAAA,GAAAH,OAAA;AAIpE,MAAMI,IAAI,GAAG,SAAS;AAEtB,MAAMC,WAAiE,GAAG;EACxEC,KAAK,EAAE;IACLC,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAEJ,IAAI;IACjBK,aAAa,EAAE,GAAG;IAClBC,oBAAoB,EAAE;EACxB,CAAC;EACDC,KAAK,EAAE;IACLJ,YAAY,EAAE,CAAC;IACfC,WAAW,EAAE,MAAM;IACnBE,oBAAoB,EAAE;EACxB,CAAC;EACDN,IAAI,EAAE;IACJG,YAAY,EAAE,CAAC;IACfC,WAAW,EAAEJ,IAAI;IACjBM,oBAAoB,EAAE;EACxB;AACF,CAAC;AAQM,MAAME,gBAAgB,GAAAC,OAAA,CAAAD,gBAAA,gBAAG,IAAAE,WAAI,EAClC,CAAC;EAAEC,QAAQ;EAAEC;AAA+B,CAAC,kBAC3C,IAAAb,WAAA,CAAAc,IAAA,EAAAd,WAAA,CAAAe,QAAA;EAAAC,QAAA,gBACE,IAAAhB,WAAA,CAAAiB,GAAA,EAACnB,YAAA,CAAAoB,WAAW;IACVC,EAAE,EAAC,+BAA+B;IAClCP,QAAQ,EAAEA,QAAS;IACnBQ,KAAK,EAAElB,WAAW,CAACC;EAAM,CAC1B,CAAC,eACF,IAAAH,WAAA,CAAAiB,GAAA,EAACnB,YAAA,CAAAoB,WAAW;IACVC,EAAE,EAAC,+BAA+B;IAClCP,QAAQ,EAAEA,QAAS;IACnBQ,KAAK,EAAElB,WAAW,CAACM;EAAM,CAC1B,CAAC,eACF,IAAAR,WAAA,CAAAiB,GAAA,EAACnB,YAAA,CAAAoB,WAAW;IACVC,EAAE,EAAC,8BAA8B;IACjCP,QAAQ,EAAEA,QAAS;IACnBQ,KAAK,EAAElB,WAAW,CAACD;EAAK,CACzB,CAAC,EACD,OAAOY,OAAO,KAAK,QAAQ,iBAC1B,IAAAb,WAAA,CAAAiB,GAAA,EAAClB,wBAAA,CAAAsB,uBAAuB;IACtBT,QAAQ,EAAEA,QAAS;IACnBU,YAAY,EAAC,+BAA+B;IAC5CT,OAAO,EAAEA;EAAQ,CAClB,CACF;AAAA,CACD,CAEN,CAAC","ignoreList":[]}
|
|
@@ -3,26 +3,29 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.UserLocationPuckHeading = void 0;
|
|
7
|
+
var _react = require("react");
|
|
7
8
|
var _SymbolLayer = require("./SymbolLayer.js");
|
|
8
9
|
var _heading = _interopRequireDefault(require("../assets/heading.png"));
|
|
9
10
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
10
11
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
-
const
|
|
12
|
+
const layerStyle = {
|
|
12
13
|
iconImage: _heading.default,
|
|
13
14
|
iconAllowOverlap: true,
|
|
14
15
|
iconPitchAlignment: "map",
|
|
15
16
|
iconRotationAlignment: "map"
|
|
16
17
|
};
|
|
17
|
-
const
|
|
18
|
+
const UserLocationPuckHeading = exports.UserLocationPuckHeading = /*#__PURE__*/(0, _react.memo)(({
|
|
19
|
+
sourceID,
|
|
20
|
+
belowLayerID,
|
|
18
21
|
heading
|
|
19
22
|
}) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_SymbolLayer.SymbolLayer, {
|
|
20
|
-
id: "
|
|
21
|
-
|
|
23
|
+
id: "mlrn-user-location-puck-heading",
|
|
24
|
+
sourceID: sourceID,
|
|
25
|
+
belowLayerID: belowLayerID,
|
|
22
26
|
style: {
|
|
23
27
|
iconRotate: heading,
|
|
24
|
-
...
|
|
28
|
+
...layerStyle
|
|
25
29
|
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
//# sourceMappingURL=HeadingIndicator.js.map
|
|
30
|
+
}));
|
|
31
|
+
//# sourceMappingURL=UserLocationPuckHeading.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_SymbolLayer","_heading","_interopRequireDefault","_jsxRuntime","e","__esModule","default","layerStyle","iconImage","headingIcon","iconAllowOverlap","iconPitchAlignment","iconRotationAlignment","UserLocationPuckHeading","exports","memo","sourceID","belowLayerID","heading","jsx","SymbolLayer","id","style","iconRotate"],"sourceRoot":"../../../src","sources":["components/UserLocationPuckHeading.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAC,sBAAA,CAAAH,OAAA;AAAgD,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAG,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAIhD,MAAMG,UAA4B,GAAG;EACnCC,SAAS,EAAEC,gBAAW;EACtBC,gBAAgB,EAAE,IAAI;EACtBC,kBAAkB,EAAE,KAAK;EACzBC,qBAAqB,EAAE;AACzB,CAAC;AAQM,MAAMC,uBAAuB,GAAAC,OAAA,CAAAD,uBAAA,gBAAG,IAAAE,WAAI,EACzC,CAAC;EAAEC,QAAQ;EAAEC,YAAY;EAAEC;AAAsC,CAAC,kBAChE,IAAAf,WAAA,CAAAgB,GAAA,EAACnB,YAAA,CAAAoB,WAAW;EACVC,EAAE,EAAC,iCAAiC;EACpCL,QAAQ,EAAEA,QAAS;EACnBC,YAAY,EAAEA,YAAa;EAC3BK,KAAK,EAAE;IACLC,UAAU,EAAEL,OAAO;IACnB,GAAGX;EACL;AAAE,CACH,CAEL,CAAC","ignoreList":[]}
|
|
@@ -12,7 +12,7 @@ export const NATIVE_MODULE_NAME = "MLRNMarkerView";
|
|
|
12
12
|
*
|
|
13
13
|
* If you have static view consider using PointAnnotation or SymbolLayer they'll offer much better performance
|
|
14
14
|
* .
|
|
15
|
-
* This is based on [MakerView plugin](https://
|
|
15
|
+
* This is based on [MakerView plugin](https://github.com/maplibre/maplibre-plugins-android/tree/main/plugin-markerview) on Android
|
|
16
16
|
* and PointAnnotation on iOS.
|
|
17
17
|
*/
|
|
18
18
|
export const MarkerView = ({
|
|
@@ -2,43 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
import { forwardRef, memo, useEffect, useImperativeHandle, useRef, useState } from "react";
|
|
4
4
|
import { Annotation } from "./Annotation.js";
|
|
5
|
-
import { CircleLayer } from "./CircleLayer.js";
|
|
6
|
-
import { HeadingIndicator } from "./HeadingIndicator.js";
|
|
7
5
|
import { NativeUserLocation } from "./NativeUserLocation.js";
|
|
6
|
+
import { UserLocationPuck } from "./UserLocationPuck.js";
|
|
8
7
|
import { LocationManager } from "../modules/location/LocationManager.js";
|
|
9
8
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
|
-
const
|
|
11
|
-
const layerStyles = {
|
|
12
|
-
pluse: {
|
|
13
|
-
circleRadius: 15,
|
|
14
|
-
circleColor: mapboxBlue,
|
|
15
|
-
circleOpacity: 0.2,
|
|
16
|
-
circlePitchAlignment: "map"
|
|
17
|
-
},
|
|
18
|
-
background: {
|
|
19
|
-
circleRadius: 9,
|
|
20
|
-
circleColor: "#fff",
|
|
21
|
-
circlePitchAlignment: "map"
|
|
22
|
-
},
|
|
23
|
-
foreground: {
|
|
24
|
-
circleRadius: 6,
|
|
25
|
-
circleColor: mapboxBlue,
|
|
26
|
-
circlePitchAlignment: "map"
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
export const normalIcon = (showsUserHeadingIndicator, heading) => [/*#__PURE__*/_jsx(CircleLayer, {
|
|
30
|
-
id: "mapboxUserLocationPluseCircle",
|
|
31
|
-
style: layerStyles.pluse
|
|
32
|
-
}, "mapboxUserLocationPluseCircle"), /*#__PURE__*/_jsx(CircleLayer, {
|
|
33
|
-
id: "mapboxUserLocationWhiteCircle",
|
|
34
|
-
style: layerStyles.background
|
|
35
|
-
}, "mapboxUserLocationWhiteCircle"), /*#__PURE__*/_jsx(CircleLayer, {
|
|
36
|
-
id: "mapboxUserLocationBlueCicle",
|
|
37
|
-
aboveLayerID: "mapboxUserLocationWhiteCircle",
|
|
38
|
-
style: layerStyles.foreground
|
|
39
|
-
}, "mapboxUserLocationBlueCicle"), ...(showsUserHeadingIndicator && heading ? [HeadingIndicator({
|
|
40
|
-
heading
|
|
41
|
-
})] : [])];
|
|
9
|
+
const USER_LOCATION_SOURCE_ID = "mlrn-user-location";
|
|
42
10
|
export let UserLocationRenderMode = /*#__PURE__*/function (UserLocationRenderMode) {
|
|
43
11
|
UserLocationRenderMode["Native"] = "native";
|
|
44
12
|
UserLocationRenderMode["Normal"] = "normal";
|
|
@@ -169,13 +137,16 @@ export const UserLocation = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(({
|
|
|
169
137
|
}
|
|
170
138
|
return /*#__PURE__*/_jsx(Annotation, {
|
|
171
139
|
animated: animated,
|
|
172
|
-
id:
|
|
140
|
+
id: USER_LOCATION_SOURCE_ID,
|
|
173
141
|
onPress: onPress,
|
|
174
142
|
coordinates: userLocationState.coordinates,
|
|
175
143
|
style: {
|
|
176
144
|
iconRotate: userLocationState.heading
|
|
177
145
|
},
|
|
178
|
-
children: children ||
|
|
146
|
+
children: children || /*#__PURE__*/_jsx(UserLocationPuck, {
|
|
147
|
+
sourceID: USER_LOCATION_SOURCE_ID,
|
|
148
|
+
heading: showsUserHeadingIndicator ? userLocationState.heading : undefined
|
|
149
|
+
})
|
|
179
150
|
});
|
|
180
151
|
}));
|
|
181
152
|
//# sourceMappingURL=UserLocation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["forwardRef","memo","useEffect","useImperativeHandle","useRef","useState","Annotation","
|
|
1
|
+
{"version":3,"names":["forwardRef","memo","useEffect","useImperativeHandle","useRef","useState","Annotation","NativeUserLocation","UserLocationPuck","LocationManager","jsx","_jsx","USER_LOCATION_SOURCE_ID","UserLocationRenderMode","UserLocation","animated","visible","showsUserHeadingIndicator","minDisplacement","renderMode","androidRenderMode","androidPreferredFramesPerSecond","children","onUpdate","onPress","ref","_isMounted","locationManagerRunning","userLocationState","setUserLocationState","shouldShowUserLocation","setLocationManager","needsLocationManagerRunning","_onLocationUpdate","current","running","then","Native","setMinDisplacement","addListener","location","getLastKnownLocation","removeListener","Normal","coordinates","heading","coords","longitude","latitude","props","iosShowsUserHeadingIndicator","id","style","iconRotate","sourceID","undefined"],"sourceRoot":"../../../src","sources":["components/UserLocation.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo } from "react";
|
|
4
|
+
import { CircleLayer } from "./CircleLayer.js";
|
|
5
|
+
import { UserLocationPuckHeading } from "./UserLocationPuckHeading.js";
|
|
6
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
const blue = "#33B5E5";
|
|
8
|
+
const layerStyles = {
|
|
9
|
+
pulse: {
|
|
10
|
+
circleRadius: 15,
|
|
11
|
+
circleColor: blue,
|
|
12
|
+
circleOpacity: 0.2,
|
|
13
|
+
circlePitchAlignment: "map"
|
|
14
|
+
},
|
|
15
|
+
white: {
|
|
16
|
+
circleRadius: 9,
|
|
17
|
+
circleColor: "#fff",
|
|
18
|
+
circlePitchAlignment: "map"
|
|
19
|
+
},
|
|
20
|
+
blue: {
|
|
21
|
+
circleRadius: 6,
|
|
22
|
+
circleColor: blue,
|
|
23
|
+
circlePitchAlignment: "map"
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
export const UserLocationPuck = /*#__PURE__*/memo(({
|
|
27
|
+
sourceID,
|
|
28
|
+
heading
|
|
29
|
+
}) => /*#__PURE__*/_jsxs(_Fragment, {
|
|
30
|
+
children: [/*#__PURE__*/_jsx(CircleLayer, {
|
|
31
|
+
id: "mlrn-user-location-puck-pulse",
|
|
32
|
+
sourceID: sourceID,
|
|
33
|
+
style: layerStyles.pulse
|
|
34
|
+
}), /*#__PURE__*/_jsx(CircleLayer, {
|
|
35
|
+
id: "mlrn-user-location-puck-white",
|
|
36
|
+
sourceID: sourceID,
|
|
37
|
+
style: layerStyles.white
|
|
38
|
+
}), /*#__PURE__*/_jsx(CircleLayer, {
|
|
39
|
+
id: "mlrn-user-location-puck-blue",
|
|
40
|
+
sourceID: sourceID,
|
|
41
|
+
style: layerStyles.blue
|
|
42
|
+
}), typeof heading === "number" && /*#__PURE__*/_jsx(UserLocationPuckHeading, {
|
|
43
|
+
sourceID: sourceID,
|
|
44
|
+
belowLayerID: "mlrn-user-location-puck-white",
|
|
45
|
+
heading: heading
|
|
46
|
+
})]
|
|
47
|
+
}));
|
|
48
|
+
//# sourceMappingURL=UserLocationPuck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","CircleLayer","UserLocationPuckHeading","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","blue","layerStyles","pulse","circleRadius","circleColor","circleOpacity","circlePitchAlignment","white","UserLocationPuck","sourceID","heading","children","id","style","belowLayerID"],"sourceRoot":"../../../src","sources":["components/UserLocationPuck.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAE5B,SAASC,WAAW,QAAQ,kBAAe;AAC3C,SAASC,uBAAuB,QAAQ,8BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAIpE,MAAMC,IAAI,GAAG,SAAS;AAEtB,MAAMC,WAAiE,GAAG;EACxEC,KAAK,EAAE;IACLC,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAEJ,IAAI;IACjBK,aAAa,EAAE,GAAG;IAClBC,oBAAoB,EAAE;EACxB,CAAC;EACDC,KAAK,EAAE;IACLJ,YAAY,EAAE,CAAC;IACfC,WAAW,EAAE,MAAM;IACnBE,oBAAoB,EAAE;EACxB,CAAC;EACDN,IAAI,EAAE;IACJG,YAAY,EAAE,CAAC;IACfC,WAAW,EAAEJ,IAAI;IACjBM,oBAAoB,EAAE;EACxB;AACF,CAAC;AAQD,OAAO,MAAME,gBAAgB,gBAAGjB,IAAI,CAClC,CAAC;EAAEkB,QAAQ;EAAEC;AAA+B,CAAC,kBAC3CX,KAAA,CAAAF,SAAA;EAAAc,QAAA,gBACEhB,IAAA,CAACH,WAAW;IACVoB,EAAE,EAAC,+BAA+B;IAClCH,QAAQ,EAAEA,QAAS;IACnBI,KAAK,EAAEZ,WAAW,CAACC;EAAM,CAC1B,CAAC,eACFP,IAAA,CAACH,WAAW;IACVoB,EAAE,EAAC,+BAA+B;IAClCH,QAAQ,EAAEA,QAAS;IACnBI,KAAK,EAAEZ,WAAW,CAACM;EAAM,CAC1B,CAAC,eACFZ,IAAA,CAACH,WAAW;IACVoB,EAAE,EAAC,8BAA8B;IACjCH,QAAQ,EAAEA,QAAS;IACnBI,KAAK,EAAEZ,WAAW,CAACD;EAAK,CACzB,CAAC,EACD,OAAOU,OAAO,KAAK,QAAQ,iBAC1Bf,IAAA,CAACF,uBAAuB;IACtBgB,QAAQ,EAAEA,QAAS;IACnBK,YAAY,EAAC,+BAA+B;IAC5CJ,OAAO,EAAEA;EAAQ,CAClB,CACF;AAAA,CACD,CAEN,CAAC","ignoreList":[]}
|
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { memo } from "react";
|
|
3
4
|
import { SymbolLayer } from "./SymbolLayer.js";
|
|
4
5
|
import headingIcon from "../assets/heading.png";
|
|
5
6
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
-
const
|
|
7
|
+
const layerStyle = {
|
|
7
8
|
iconImage: headingIcon,
|
|
8
9
|
iconAllowOverlap: true,
|
|
9
10
|
iconPitchAlignment: "map",
|
|
10
11
|
iconRotationAlignment: "map"
|
|
11
12
|
};
|
|
12
|
-
export const
|
|
13
|
+
export const UserLocationPuckHeading = /*#__PURE__*/memo(({
|
|
14
|
+
sourceID,
|
|
15
|
+
belowLayerID,
|
|
13
16
|
heading
|
|
14
17
|
}) => /*#__PURE__*/_jsx(SymbolLayer, {
|
|
15
|
-
id: "
|
|
16
|
-
|
|
18
|
+
id: "mlrn-user-location-puck-heading",
|
|
19
|
+
sourceID: sourceID,
|
|
20
|
+
belowLayerID: belowLayerID,
|
|
17
21
|
style: {
|
|
18
22
|
iconRotate: heading,
|
|
19
|
-
...
|
|
23
|
+
...layerStyle
|
|
20
24
|
}
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=
|
|
25
|
+
}));
|
|
26
|
+
//# sourceMappingURL=UserLocationPuckHeading.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","SymbolLayer","headingIcon","jsx","_jsx","layerStyle","iconImage","iconAllowOverlap","iconPitchAlignment","iconRotationAlignment","UserLocationPuckHeading","sourceID","belowLayerID","heading","id","style","iconRotate"],"sourceRoot":"../../../src","sources":["components/UserLocationPuckHeading.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAE5B,SAASC,WAAW,QAAQ,kBAAe;AAC3C,OAAOC,WAAW,MAAM,uBAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAIhD,MAAMC,UAA4B,GAAG;EACnCC,SAAS,EAAEJ,WAAW;EACtBK,gBAAgB,EAAE,IAAI;EACtBC,kBAAkB,EAAE,KAAK;EACzBC,qBAAqB,EAAE;AACzB,CAAC;AAQD,OAAO,MAAMC,uBAAuB,gBAAGV,IAAI,CACzC,CAAC;EAAEW,QAAQ;EAAEC,YAAY;EAAEC;AAAsC,CAAC,kBAChET,IAAA,CAACH,WAAW;EACVa,EAAE,EAAC,iCAAiC;EACpCH,QAAQ,EAAEA,QAAS;EACnBC,YAAY,EAAEA,YAAa;EAC3BG,KAAK,EAAE;IACLC,UAAU,EAAEH,OAAO;IACnB,GAAGR;EACL;AAAE,CACH,CAEL,CAAC","ignoreList":[]}
|
|
@@ -36,7 +36,7 @@ interface MarkerViewProps extends ViewProps {
|
|
|
36
36
|
*
|
|
37
37
|
* If you have static view consider using PointAnnotation or SymbolLayer they'll offer much better performance
|
|
38
38
|
* .
|
|
39
|
-
* This is based on [MakerView plugin](https://
|
|
39
|
+
* This is based on [MakerView plugin](https://github.com/maplibre/maplibre-plugins-android/tree/main/plugin-markerview) on Android
|
|
40
40
|
* and PointAnnotation on iOS.
|
|
41
41
|
*/
|
|
42
42
|
export declare const MarkerView: ({ anchor, allowOverlap, isSelected, ...rest }: MarkerViewProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { type ReactNode } from "react";
|
|
2
2
|
import { type Location } from "../modules/location/LocationManager";
|
|
3
|
-
export declare const normalIcon: (showsUserHeadingIndicator?: boolean, heading?: number) => import("react/jsx-runtime").JSX.Element[];
|
|
4
3
|
interface UserLocationProps {
|
|
5
4
|
/**
|
|
6
5
|
* Whether location icon is animated between updates
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserLocation.d.ts","sourceRoot":"","sources":["../../../../../src/components/UserLocation.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"UserLocation.d.ts","sourceRoot":"","sources":["../../../../../src/components/UserLocation.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AAKf,OAAO,EACL,KAAK,QAAQ,EAEd,MAAM,qCAAqC,CAAC;AAI7C,UAAU,iBAAiB;IACzB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACjC;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAC;IACjD;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,OAAO,CAAC,IAAI,IAAI,CAAC;IACjB;;OAEG;IACH,QAAQ,CAAC,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IACpC;;OAEG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,+BAA+B,CAAC,EAAE,MAAM,CAAC;IACzC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAQD,oBAAY,sBAAsB;IAChC,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,kBAAkB,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,2BAA2B,EAAE,MAAM,OAAO,CAAC;IAC3C,iBAAiB,EAAE,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC;CACxD;AAED,eAAO,MAAM,YAAY,oJAgLxB,CAAC"}
|