-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathRNGoogleMapsPlusStreetView.swift
More file actions
95 lines (80 loc) · 2.69 KB
/
RNGoogleMapsPlusStreetView.swift
File metadata and controls
95 lines (80 loc) · 2.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import CoreLocation
import Foundation
import GoogleMaps
import NitroModules
final class RNGoogleMapsPlusStreetView: HybridRNGoogleMapsPlusStreetViewSpec {
private let mapErrorHandler: MapErrorHandler
private let permissionHandler: PermissionHandler
private let locationHandler: LocationHandler
private let impl: StreetViewPanoramaViewImpl
var view: UIView {
return impl
}
override init() {
self.permissionHandler = PermissionHandler()
self.locationHandler = LocationHandler()
self.mapErrorHandler = MapErrorHandler()
self.impl = StreetViewPanoramaViewImpl(
mapErrorHandler: mapErrorHandler,
locationHandler: locationHandler
)
}
func onDropView() {
impl.deinitInternal()
}
var initialProps: RNStreetViewInitialProps? {
didSet { impl.streetViewInitialProps = initialProps }
}
var uiSettings: RNStreetViewUiSettings? {
didSet { impl.uiSettings = uiSettings }
}
var onPanoramaReady: ((Bool) -> Void)? {
didSet { impl.onPanoramaReady = onPanoramaReady }
}
var onLocationUpdate: ((RNLocation) -> Void)? {
didSet { impl.onLocationUpdate = onLocationUpdate }
}
var onLocationError: ((RNLocationErrorCode) -> Void)? {
didSet { impl.onLocationError = onLocationError }
}
var onPanoramaChange: ((RNStreetViewPanoramaLocation) -> Void)? {
didSet { impl.onPanoramaChange = onPanoramaChange }
}
var onCameraChange: ((RNStreetViewCamera) -> Void)? {
didSet { impl.onCameraChange = onCameraChange }
}
var onPanoramaPress: ((RNStreetViewOrientation) -> Void)? {
didSet { impl.onPanoramaPress = onPanoramaPress }
}
var onPanoramaError: ((RNMapErrorCode, String) -> Void)? {
didSet { mapErrorHandler.callback = onPanoramaError }
}
func setCamera(camera: RNStreetViewCamera, animated: Bool?, durationMs: Double?) {
onMain {
let cam = camera.toGMSPanoramaCamera(current: self.impl.currentCamera)
self.impl.setCamera(cam, animated: animated ?? false, durationMs: durationMs ?? 1000)
}
}
func setPosition(position: RNLatLng, radius: Double?, source: RNStreetViewSource?) {
impl.setPosition(
position.toCLLocationCoordinate2D(),
radius: radius.map { UInt($0) },
source: source?.toGMSPanoramaSource ?? .default
)
}
func setPositionById(panoramaId: String) {
impl.setPositionById(panoramaId)
}
func showLocationDialog() {
locationHandler.showLocationDialog()
}
func openLocationSettings() {
locationHandler.openLocationSettings()
}
func requestLocationPermission() -> NitroModules.Promise<RNLocationPermissionResult> {
return permissionHandler.requestLocationPermission()
}
func isGooglePlayServicesAvailable() -> Bool {
return false
}
}