@granite-js/naver-map 1.0.0
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/CHANGELOG.md +7 -0
- package/GraniteNaverMap.podspec +81 -0
- package/android/build.gradle +160 -0
- package/android/gradle.properties +5 -0
- package/android/src/builtinProvider/java/run/granite/navermap/builtinProvider/BuiltInGraniteNaverMapProvider.kt +549 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/java/run/granite/navermap/GraniteNaverMapEvents.kt +91 -0
- package/android/src/main/java/run/granite/navermap/GraniteNaverMapPackage.kt +16 -0
- package/android/src/main/java/run/granite/navermap/GraniteNaverMapProvider.kt +242 -0
- package/android/src/main/java/run/granite/navermap/GraniteNaverMapRegistry.kt +116 -0
- package/android/src/main/java/run/granite/navermap/GraniteNaverMapView.kt +732 -0
- package/android/src/newarch/java/run/granite/navermap/GraniteNaverMapViewManager.kt +446 -0
- package/android/src/oldarch/java/run/granite/navermap/GraniteNaverMapViewManager.kt +249 -0
- package/dist/module/NaverMapView.js +110 -0
- package/dist/module/NaverMapView.js.map +1 -0
- package/dist/module/index.js +6 -0
- package/dist/module/index.js.map +1 -0
- package/dist/module/internals/colorUtils.js +624 -0
- package/dist/module/internals/colorUtils.js.map +1 -0
- package/dist/module/internals/context.js +8 -0
- package/dist/module/internals/context.js.map +1 -0
- package/dist/module/internals/id.js +10 -0
- package/dist/module/internals/id.js.map +1 -0
- package/dist/module/internals/useMapOverlay.js +44 -0
- package/dist/module/internals/useMapOverlay.js.map +1 -0
- package/dist/module/internals/usePreservedReference.js +36 -0
- package/dist/module/internals/usePreservedReference.js.map +1 -0
- package/dist/module/overlays/ArrowheadPath.js +37 -0
- package/dist/module/overlays/ArrowheadPath.js.map +1 -0
- package/dist/module/overlays/Circle.js +35 -0
- package/dist/module/overlays/Circle.js.map +1 -0
- package/dist/module/overlays/GroundOverlay.js +30 -0
- package/dist/module/overlays/GroundOverlay.js.map +1 -0
- package/dist/module/overlays/InfoWindow.js +32 -0
- package/dist/module/overlays/InfoWindow.js.map +1 -0
- package/dist/module/overlays/Marker.js +37 -0
- package/dist/module/overlays/Marker.js.map +1 -0
- package/dist/module/overlays/Path.js +41 -0
- package/dist/module/overlays/Path.js.map +1 -0
- package/dist/module/overlays/Polygon.js +51 -0
- package/dist/module/overlays/Polygon.js.map +1 -0
- package/dist/module/overlays/Polyline.js +60 -0
- package/dist/module/overlays/Polyline.js.map +1 -0
- package/dist/module/overlays/index.js +11 -0
- package/dist/module/overlays/index.js.map +1 -0
- package/dist/module/package.json +1 -0
- package/dist/module/specs/GraniteNaverMapViewNativeComponent.ts +352 -0
- package/dist/module/types/Coord.js +2 -0
- package/dist/module/types/Coord.js.map +1 -0
- package/dist/module/types/index.js +29 -0
- package/dist/module/types/index.js.map +1 -0
- package/dist/typescript/NaverMapView.d.ts +41 -0
- package/dist/typescript/index.d.ts +3 -0
- package/dist/typescript/internals/colorUtils.d.ts +10 -0
- package/dist/typescript/internals/context.d.ts +8 -0
- package/dist/typescript/internals/id.d.ts +1 -0
- package/dist/typescript/internals/useMapOverlay.d.ts +15 -0
- package/dist/typescript/internals/usePreservedReference.d.ts +6 -0
- package/dist/typescript/overlays/ArrowheadPath.d.ts +11 -0
- package/dist/typescript/overlays/Circle.d.ts +10 -0
- package/dist/typescript/overlays/GroundOverlay.d.ts +11 -0
- package/dist/typescript/overlays/InfoWindow.d.ts +14 -0
- package/dist/typescript/overlays/Marker.d.ts +16 -0
- package/dist/typescript/overlays/Path.d.ts +15 -0
- package/dist/typescript/overlays/Polygon.d.ts +10 -0
- package/dist/typescript/overlays/Polyline.d.ts +11 -0
- package/dist/typescript/overlays/index.d.ts +16 -0
- package/dist/typescript/specs/GraniteNaverMapViewNativeComponent.d.ts +92 -0
- package/dist/typescript/types/Coord.d.ts +4 -0
- package/dist/typescript/types/index.d.ts +55 -0
- package/ios/GraniteNaverMap-Bridging-Header.h +20 -0
- package/ios/GraniteNaverMapProvider.swift +312 -0
- package/ios/GraniteNaverMapRegistry.swift +91 -0
- package/ios/GraniteNaverMapView.h +15 -0
- package/ios/GraniteNaverMapView.mm +390 -0
- package/ios/GraniteNaverMapViewImpl.swift +496 -0
- package/ios/GraniteNaverMapViewManager.m +67 -0
- package/ios/GraniteNaverMapViewManager.swift +133 -0
- package/ios/GraniteNaverMapViewWrapper.swift +215 -0
- package/ios/builtinProvider/BuiltInNaverMapProvider.swift +489 -0
- package/ios/builtinProvider/GraniteNaverMapMarkerData.swift +66 -0
- package/ios/builtinProvider/NMFMarker+Extension.swift +65 -0
- package/ios/builtinProvider/RCTConvert+NMFMapView.h +17 -0
- package/ios/builtinProvider/RCTConvert+NMFMapView.m +67 -0
- package/package.json +103 -0
- package/src/NaverMapView.tsx +168 -0
- package/src/index.tsx +3 -0
- package/src/internals/colorUtils.ts +697 -0
- package/src/internals/context.ts +14 -0
- package/src/internals/id.ts +9 -0
- package/src/internals/useMapOverlay.ts +59 -0
- package/src/internals/usePreservedReference.ts +41 -0
- package/src/overlays/ArrowheadPath.ts +71 -0
- package/src/overlays/Circle.ts +68 -0
- package/src/overlays/GroundOverlay.ts +62 -0
- package/src/overlays/InfoWindow.ts +68 -0
- package/src/overlays/Marker.ts +83 -0
- package/src/overlays/Path.ts +87 -0
- package/src/overlays/Polygon.ts +83 -0
- package/src/overlays/Polyline.ts +93 -0
- package/src/overlays/index.ts +23 -0
- package/src/specs/GraniteNaverMapViewNativeComponent.ts +352 -0
- package/src/types/Coord.ts +4 -0
- package/src/types/index.ts +78 -0
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
package run.granite.navermap
|
|
2
|
+
|
|
3
|
+
import android.util.Log
|
|
4
|
+
import com.facebook.react.bridge.ReadableArray
|
|
5
|
+
import com.facebook.react.bridge.ReadableMap
|
|
6
|
+
import com.facebook.react.module.annotations.ReactModule
|
|
7
|
+
import com.facebook.react.uimanager.SimpleViewManager
|
|
8
|
+
import com.facebook.react.uimanager.ThemedReactContext
|
|
9
|
+
import com.facebook.react.uimanager.ViewManagerDelegate
|
|
10
|
+
import com.facebook.react.uimanager.annotations.ReactProp
|
|
11
|
+
import com.facebook.react.viewmanagers.GraniteNaverMapViewManagerDelegate
|
|
12
|
+
import com.facebook.react.viewmanagers.GraniteNaverMapViewManagerInterface
|
|
13
|
+
|
|
14
|
+
@ReactModule(name = GraniteNaverMapViewManager.NAME)
|
|
15
|
+
class GraniteNaverMapViewManager : SimpleViewManager<GraniteNaverMapView>(),
|
|
16
|
+
GraniteNaverMapViewManagerInterface<GraniteNaverMapView> {
|
|
17
|
+
|
|
18
|
+
private val delegate = GraniteNaverMapViewManagerDelegate(this)
|
|
19
|
+
|
|
20
|
+
override fun getDelegate(): ViewManagerDelegate<GraniteNaverMapView> = delegate
|
|
21
|
+
|
|
22
|
+
override fun getName(): String = NAME
|
|
23
|
+
|
|
24
|
+
override fun createViewInstance(reactContext: ThemedReactContext): GraniteNaverMapView {
|
|
25
|
+
Log.d(NAME, "Creating GraniteNaverMapView instance")
|
|
26
|
+
return GraniteNaverMapView(reactContext)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
override fun getExportedCustomDirectEventTypeConstants(): Map<String, Any>? {
|
|
30
|
+
return mapOf(
|
|
31
|
+
"onInitialized" to mapOf("registrationName" to "onInitialized"),
|
|
32
|
+
"onCameraChange" to mapOf("registrationName" to "onCameraChange"),
|
|
33
|
+
"onTouch" to mapOf("registrationName" to "onTouch"),
|
|
34
|
+
"onMapClick" to mapOf("registrationName" to "onMapClick"),
|
|
35
|
+
"onMarkerClick" to mapOf("registrationName" to "onMarkerClick")
|
|
36
|
+
)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Props
|
|
40
|
+
@ReactProp(name = "center")
|
|
41
|
+
override fun setCenter(view: GraniteNaverMapView, center: ReadableMap?) {
|
|
42
|
+
center?.let {
|
|
43
|
+
val lat = it.getDouble("latitude")
|
|
44
|
+
val lng = it.getDouble("longitude")
|
|
45
|
+
val zoom = if (it.hasKey("zoom")) it.getDouble("zoom") else 10.0
|
|
46
|
+
val tilt = if (it.hasKey("tilt")) it.getDouble("tilt") else 0.0
|
|
47
|
+
val bearing = if (it.hasKey("bearing")) it.getDouble("bearing") else 0.0
|
|
48
|
+
view.setCenter(lat, lng, zoom, tilt, bearing)
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
@ReactProp(name = "showsMyLocationButton")
|
|
53
|
+
override fun setShowsMyLocationButton(view: GraniteNaverMapView, show: Boolean) {
|
|
54
|
+
view.setShowsMyLocationButton(show)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@ReactProp(name = "compass")
|
|
58
|
+
override fun setCompass(view: GraniteNaverMapView, show: Boolean) {
|
|
59
|
+
view.setCompass(show)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
@ReactProp(name = "scaleBar")
|
|
63
|
+
override fun setScaleBar(view: GraniteNaverMapView, show: Boolean) {
|
|
64
|
+
view.setScaleBar(show)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
@ReactProp(name = "zoomControl")
|
|
68
|
+
override fun setZoomControl(view: GraniteNaverMapView, show: Boolean) {
|
|
69
|
+
view.setZoomControl(show)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
@ReactProp(name = "mapType")
|
|
73
|
+
override fun setMapType(view: GraniteNaverMapView, mapType: Int) {
|
|
74
|
+
view.setMapType(mapType)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
@ReactProp(name = "buildingHeight", defaultFloat = 1f)
|
|
78
|
+
override fun setBuildingHeight(view: GraniteNaverMapView, height: Float) {
|
|
79
|
+
view.setBuildingHeight(height)
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
@ReactProp(name = "nightMode")
|
|
83
|
+
override fun setNightMode(view: GraniteNaverMapView, enabled: Boolean) {
|
|
84
|
+
view.setNightMode(enabled)
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
@ReactProp(name = "minZoomLevel", defaultDouble = 0.0)
|
|
88
|
+
override fun setMinZoomLevel(view: GraniteNaverMapView, level: Double) {
|
|
89
|
+
view.setMinZoomLevel(level)
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
@ReactProp(name = "maxZoomLevel", defaultDouble = 21.0)
|
|
93
|
+
override fun setMaxZoomLevel(view: GraniteNaverMapView, level: Double) {
|
|
94
|
+
view.setMaxZoomLevel(level)
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
@ReactProp(name = "scrollGesturesEnabled", defaultBoolean = true)
|
|
98
|
+
override fun setScrollGesturesEnabled(view: GraniteNaverMapView, enabled: Boolean) {
|
|
99
|
+
view.setScrollGesturesEnabled(enabled)
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
@ReactProp(name = "zoomGesturesEnabled", defaultBoolean = true)
|
|
103
|
+
override fun setZoomGesturesEnabled(view: GraniteNaverMapView, enabled: Boolean) {
|
|
104
|
+
view.setZoomGesturesEnabled(enabled)
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
@ReactProp(name = "tiltGesturesEnabled", defaultBoolean = true)
|
|
108
|
+
override fun setTiltGesturesEnabled(view: GraniteNaverMapView, enabled: Boolean) {
|
|
109
|
+
view.setTiltGesturesEnabled(enabled)
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
@ReactProp(name = "rotateGesturesEnabled", defaultBoolean = true)
|
|
113
|
+
override fun setRotateGesturesEnabled(view: GraniteNaverMapView, enabled: Boolean) {
|
|
114
|
+
view.setRotateGesturesEnabled(enabled)
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
@ReactProp(name = "stopGesturesEnabled", defaultBoolean = true)
|
|
118
|
+
override fun setStopGesturesEnabled(view: GraniteNaverMapView, enabled: Boolean) {
|
|
119
|
+
view.setStopGesturesEnabled(enabled)
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
@ReactProp(name = "locationTrackingMode")
|
|
123
|
+
override fun setLocationTrackingMode(view: GraniteNaverMapView, mode: Int) {
|
|
124
|
+
view.setLocationTrackingMode(mode)
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
@ReactProp(name = "mapPadding")
|
|
128
|
+
override fun setMapPadding(view: GraniteNaverMapView, padding: ReadableMap?) {
|
|
129
|
+
padding?.let {
|
|
130
|
+
val top = if (it.hasKey("top")) it.getInt("top") else 0
|
|
131
|
+
val left = if (it.hasKey("left")) it.getInt("left") else 0
|
|
132
|
+
val bottom = if (it.hasKey("bottom")) it.getInt("bottom") else 0
|
|
133
|
+
val right = if (it.hasKey("right")) it.getInt("right") else 0
|
|
134
|
+
view.setMapPadding(top, left, bottom, right)
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Commands
|
|
139
|
+
override fun animateToCoordinate(view: GraniteNaverMapView, latitude: Double, longitude: Double) {
|
|
140
|
+
view.animateToCoordinate(latitude, longitude)
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
override fun animateToTwoCoordinates(
|
|
144
|
+
view: GraniteNaverMapView,
|
|
145
|
+
lat1: Double,
|
|
146
|
+
lng1: Double,
|
|
147
|
+
lat2: Double,
|
|
148
|
+
lng2: Double
|
|
149
|
+
) {
|
|
150
|
+
view.animateToTwoCoordinates(lat1, lng1, lat2, lng2)
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
override fun animateToRegion(
|
|
154
|
+
view: GraniteNaverMapView,
|
|
155
|
+
latitude: Double,
|
|
156
|
+
longitude: Double,
|
|
157
|
+
latitudeDelta: Double,
|
|
158
|
+
longitudeDelta: Double
|
|
159
|
+
) {
|
|
160
|
+
view.animateToRegion(latitude, longitude, latitudeDelta, longitudeDelta)
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
override fun setLayerGroupEnabled(view: GraniteNaverMapView, group: String, enabled: Boolean) {
|
|
164
|
+
view.setLayerGroupEnabled(group, enabled)
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
override fun addMarker(
|
|
168
|
+
view: GraniteNaverMapView,
|
|
169
|
+
identifier: String,
|
|
170
|
+
latitude: Double,
|
|
171
|
+
longitude: Double,
|
|
172
|
+
width: Int,
|
|
173
|
+
height: Int,
|
|
174
|
+
zIndex: Int,
|
|
175
|
+
rotation: Float,
|
|
176
|
+
flat: Boolean,
|
|
177
|
+
alpha: Float,
|
|
178
|
+
pinColor: Int,
|
|
179
|
+
image: String
|
|
180
|
+
) {
|
|
181
|
+
Log.d(NAME, "addMarker called: id=$identifier, lat=$latitude, lng=$longitude")
|
|
182
|
+
view.addMarkerNew(identifier, latitude, longitude, width, height, zIndex, rotation, flat, alpha, pinColor, image)
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
override fun updateMarker(
|
|
186
|
+
view: GraniteNaverMapView,
|
|
187
|
+
identifier: String,
|
|
188
|
+
latitude: Double,
|
|
189
|
+
longitude: Double,
|
|
190
|
+
width: Int,
|
|
191
|
+
height: Int,
|
|
192
|
+
zIndex: Int,
|
|
193
|
+
rotation: Float,
|
|
194
|
+
flat: Boolean,
|
|
195
|
+
alpha: Float,
|
|
196
|
+
pinColor: Int,
|
|
197
|
+
image: String
|
|
198
|
+
) {
|
|
199
|
+
view.updateMarkerNew(identifier, latitude, longitude, width, height, zIndex, rotation, flat, alpha, pinColor, image)
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
override fun removeMarker(view: GraniteNaverMapView, identifier: String) {
|
|
203
|
+
view.removeMarker(identifier)
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// Polyline Commands
|
|
207
|
+
override fun addPolyline(
|
|
208
|
+
view: GraniteNaverMapView,
|
|
209
|
+
identifier: String,
|
|
210
|
+
coordsJson: String,
|
|
211
|
+
strokeWidth: Float,
|
|
212
|
+
strokeColor: Int,
|
|
213
|
+
zIndex: Int,
|
|
214
|
+
lineCap: Int,
|
|
215
|
+
lineJoin: Int,
|
|
216
|
+
patternJson: String
|
|
217
|
+
) {
|
|
218
|
+
view.addPolyline(identifier, coordsJson, strokeWidth, strokeColor, zIndex, lineCap, lineJoin, patternJson)
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
override fun updatePolyline(
|
|
222
|
+
view: GraniteNaverMapView,
|
|
223
|
+
identifier: String,
|
|
224
|
+
coordsJson: String,
|
|
225
|
+
strokeWidth: Float,
|
|
226
|
+
strokeColor: Int,
|
|
227
|
+
zIndex: Int,
|
|
228
|
+
lineCap: Int,
|
|
229
|
+
lineJoin: Int,
|
|
230
|
+
patternJson: String
|
|
231
|
+
) {
|
|
232
|
+
view.updatePolyline(identifier, coordsJson, strokeWidth, strokeColor, zIndex, lineCap, lineJoin, patternJson)
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
override fun removePolyline(view: GraniteNaverMapView, identifier: String) {
|
|
236
|
+
view.removePolyline(identifier)
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// Polygon Commands
|
|
240
|
+
override fun addPolygon(
|
|
241
|
+
view: GraniteNaverMapView,
|
|
242
|
+
identifier: String,
|
|
243
|
+
coordsJson: String,
|
|
244
|
+
holesJson: String,
|
|
245
|
+
fillColor: Int,
|
|
246
|
+
strokeColor: Int,
|
|
247
|
+
strokeWidth: Float,
|
|
248
|
+
zIndex: Int
|
|
249
|
+
) {
|
|
250
|
+
view.addPolygon(identifier, coordsJson, holesJson, fillColor, strokeColor, strokeWidth, zIndex)
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
override fun updatePolygon(
|
|
254
|
+
view: GraniteNaverMapView,
|
|
255
|
+
identifier: String,
|
|
256
|
+
coordsJson: String,
|
|
257
|
+
holesJson: String,
|
|
258
|
+
fillColor: Int,
|
|
259
|
+
strokeColor: Int,
|
|
260
|
+
strokeWidth: Float,
|
|
261
|
+
zIndex: Int
|
|
262
|
+
) {
|
|
263
|
+
view.updatePolygon(identifier, coordsJson, holesJson, fillColor, strokeColor, strokeWidth, zIndex)
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
override fun removePolygon(view: GraniteNaverMapView, identifier: String) {
|
|
267
|
+
view.removePolygon(identifier)
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
// Circle Commands
|
|
271
|
+
override fun addCircle(
|
|
272
|
+
view: GraniteNaverMapView,
|
|
273
|
+
identifier: String,
|
|
274
|
+
latitude: Double,
|
|
275
|
+
longitude: Double,
|
|
276
|
+
radius: Double,
|
|
277
|
+
fillColor: Int,
|
|
278
|
+
strokeColor: Int,
|
|
279
|
+
strokeWidth: Float,
|
|
280
|
+
zIndex: Int
|
|
281
|
+
) {
|
|
282
|
+
view.addCircle(identifier, latitude, longitude, radius, fillColor, strokeColor, strokeWidth, zIndex)
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
override fun updateCircle(
|
|
286
|
+
view: GraniteNaverMapView,
|
|
287
|
+
identifier: String,
|
|
288
|
+
latitude: Double,
|
|
289
|
+
longitude: Double,
|
|
290
|
+
radius: Double,
|
|
291
|
+
fillColor: Int,
|
|
292
|
+
strokeColor: Int,
|
|
293
|
+
strokeWidth: Float,
|
|
294
|
+
zIndex: Int
|
|
295
|
+
) {
|
|
296
|
+
view.updateCircle(identifier, latitude, longitude, radius, fillColor, strokeColor, strokeWidth, zIndex)
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
override fun removeCircle(view: GraniteNaverMapView, identifier: String) {
|
|
300
|
+
view.removeCircle(identifier)
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
// Path Commands
|
|
304
|
+
override fun addPath(
|
|
305
|
+
view: GraniteNaverMapView,
|
|
306
|
+
identifier: String,
|
|
307
|
+
coordsJson: String,
|
|
308
|
+
width: Float,
|
|
309
|
+
outlineWidth: Float,
|
|
310
|
+
color: Int,
|
|
311
|
+
outlineColor: Int,
|
|
312
|
+
passedColor: Int,
|
|
313
|
+
passedOutlineColor: Int,
|
|
314
|
+
patternImage: String,
|
|
315
|
+
patternInterval: Int,
|
|
316
|
+
progress: Float,
|
|
317
|
+
zIndex: Int
|
|
318
|
+
) {
|
|
319
|
+
view.addPath(identifier, coordsJson, width, outlineWidth, color, outlineColor, passedColor, passedOutlineColor, patternImage, patternInterval, progress, zIndex)
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
override fun updatePath(
|
|
323
|
+
view: GraniteNaverMapView,
|
|
324
|
+
identifier: String,
|
|
325
|
+
coordsJson: String,
|
|
326
|
+
width: Float,
|
|
327
|
+
outlineWidth: Float,
|
|
328
|
+
color: Int,
|
|
329
|
+
outlineColor: Int,
|
|
330
|
+
passedColor: Int,
|
|
331
|
+
passedOutlineColor: Int,
|
|
332
|
+
patternImage: String,
|
|
333
|
+
patternInterval: Int,
|
|
334
|
+
progress: Float,
|
|
335
|
+
zIndex: Int
|
|
336
|
+
) {
|
|
337
|
+
view.updatePath(identifier, coordsJson, width, outlineWidth, color, outlineColor, passedColor, passedOutlineColor, patternImage, patternInterval, progress, zIndex)
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
override fun removePath(view: GraniteNaverMapView, identifier: String) {
|
|
341
|
+
view.removePath(identifier)
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
// ArrowheadPath Commands
|
|
345
|
+
override fun addArrowheadPath(
|
|
346
|
+
view: GraniteNaverMapView,
|
|
347
|
+
identifier: String,
|
|
348
|
+
coordsJson: String,
|
|
349
|
+
width: Float,
|
|
350
|
+
outlineWidth: Float,
|
|
351
|
+
color: Int,
|
|
352
|
+
outlineColor: Int,
|
|
353
|
+
headSizeRatio: Float,
|
|
354
|
+
zIndex: Int
|
|
355
|
+
) {
|
|
356
|
+
view.addArrowheadPath(identifier, coordsJson, width, outlineWidth, color, outlineColor, headSizeRatio, zIndex)
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
override fun updateArrowheadPath(
|
|
360
|
+
view: GraniteNaverMapView,
|
|
361
|
+
identifier: String,
|
|
362
|
+
coordsJson: String,
|
|
363
|
+
width: Float,
|
|
364
|
+
outlineWidth: Float,
|
|
365
|
+
color: Int,
|
|
366
|
+
outlineColor: Int,
|
|
367
|
+
headSizeRatio: Float,
|
|
368
|
+
zIndex: Int
|
|
369
|
+
) {
|
|
370
|
+
view.updateArrowheadPath(identifier, coordsJson, width, outlineWidth, color, outlineColor, headSizeRatio, zIndex)
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
override fun removeArrowheadPath(view: GraniteNaverMapView, identifier: String) {
|
|
374
|
+
view.removeArrowheadPath(identifier)
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
// GroundOverlay Commands
|
|
378
|
+
override fun addGroundOverlay(
|
|
379
|
+
view: GraniteNaverMapView,
|
|
380
|
+
identifier: String,
|
|
381
|
+
swLat: Double,
|
|
382
|
+
swLng: Double,
|
|
383
|
+
neLat: Double,
|
|
384
|
+
neLng: Double,
|
|
385
|
+
image: String,
|
|
386
|
+
alpha: Float,
|
|
387
|
+
zIndex: Int
|
|
388
|
+
) {
|
|
389
|
+
view.addGroundOverlay(identifier, swLat, swLng, neLat, neLng, image, alpha, zIndex)
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
override fun updateGroundOverlay(
|
|
393
|
+
view: GraniteNaverMapView,
|
|
394
|
+
identifier: String,
|
|
395
|
+
swLat: Double,
|
|
396
|
+
swLng: Double,
|
|
397
|
+
neLat: Double,
|
|
398
|
+
neLng: Double,
|
|
399
|
+
image: String,
|
|
400
|
+
alpha: Float,
|
|
401
|
+
zIndex: Int
|
|
402
|
+
) {
|
|
403
|
+
view.updateGroundOverlay(identifier, swLat, swLng, neLat, neLng, image, alpha, zIndex)
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
override fun removeGroundOverlay(view: GraniteNaverMapView, identifier: String) {
|
|
407
|
+
view.removeGroundOverlay(identifier)
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
// InfoWindow Commands
|
|
411
|
+
override fun addInfoWindow(
|
|
412
|
+
view: GraniteNaverMapView,
|
|
413
|
+
identifier: String,
|
|
414
|
+
latitude: Double,
|
|
415
|
+
longitude: Double,
|
|
416
|
+
text: String,
|
|
417
|
+
alpha: Float,
|
|
418
|
+
zIndex: Int,
|
|
419
|
+
offsetX: Int,
|
|
420
|
+
offsetY: Int
|
|
421
|
+
) {
|
|
422
|
+
view.addInfoWindow(identifier, latitude, longitude, text, alpha, zIndex, offsetX, offsetY)
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
override fun updateInfoWindow(
|
|
426
|
+
view: GraniteNaverMapView,
|
|
427
|
+
identifier: String,
|
|
428
|
+
latitude: Double,
|
|
429
|
+
longitude: Double,
|
|
430
|
+
text: String,
|
|
431
|
+
alpha: Float,
|
|
432
|
+
zIndex: Int,
|
|
433
|
+
offsetX: Int,
|
|
434
|
+
offsetY: Int
|
|
435
|
+
) {
|
|
436
|
+
view.updateInfoWindow(identifier, latitude, longitude, text, alpha, zIndex, offsetX, offsetY)
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
override fun removeInfoWindow(view: GraniteNaverMapView, identifier: String) {
|
|
440
|
+
view.removeInfoWindow(identifier)
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
companion object {
|
|
444
|
+
const val NAME = "GraniteNaverMapView"
|
|
445
|
+
}
|
|
446
|
+
}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
package run.granite.navermap
|
|
2
|
+
|
|
3
|
+
import android.graphics.Color
|
|
4
|
+
import com.facebook.react.bridge.ReadableArray
|
|
5
|
+
import com.facebook.react.bridge.ReadableMap
|
|
6
|
+
import com.facebook.react.common.MapBuilder
|
|
7
|
+
import com.facebook.react.uimanager.SimpleViewManager
|
|
8
|
+
import com.facebook.react.uimanager.ThemedReactContext
|
|
9
|
+
import com.facebook.react.uimanager.annotations.ReactProp
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Old Architecture ViewManager (no direct NMapsMap dependency)
|
|
13
|
+
*/
|
|
14
|
+
class GraniteNaverMapViewManager : SimpleViewManager<GraniteNaverMapView>() {
|
|
15
|
+
|
|
16
|
+
override fun getName(): String = "GraniteNaverMapView"
|
|
17
|
+
|
|
18
|
+
override fun createViewInstance(reactContext: ThemedReactContext): GraniteNaverMapView {
|
|
19
|
+
return GraniteNaverMapView(reactContext)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
override fun getExportedCustomDirectEventTypeConstants(): Map<String, Any>? {
|
|
23
|
+
return MapBuilder.builder<String, Any>()
|
|
24
|
+
.put("onInitialized", MapBuilder.of("registrationName", "onInitialized"))
|
|
25
|
+
.put("onCameraChange", MapBuilder.of("registrationName", "onCameraChange"))
|
|
26
|
+
.put("onTouch", MapBuilder.of("registrationName", "onTouch"))
|
|
27
|
+
.put("onMapClick", MapBuilder.of("registrationName", "onMapClick"))
|
|
28
|
+
.put("onMarkerClick", MapBuilder.of("registrationName", "onMarkerClick"))
|
|
29
|
+
.build()
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
override fun getCommandsMap(): Map<String, Int>? {
|
|
33
|
+
return MapBuilder.builder<String, Int>()
|
|
34
|
+
.put("animateToCoordinate", COMMAND_ANIMATE_TO_COORDINATE)
|
|
35
|
+
.put("animateToTwoCoordinates", COMMAND_ANIMATE_TO_TWO_COORDINATES)
|
|
36
|
+
.put("animateToRegion", COMMAND_ANIMATE_TO_REGION)
|
|
37
|
+
.put("setLayerGroupEnabled", COMMAND_SET_LAYER_GROUP_ENABLED)
|
|
38
|
+
.put("addMarker", COMMAND_ADD_MARKER)
|
|
39
|
+
.put("updateMarker", COMMAND_UPDATE_MARKER)
|
|
40
|
+
.put("removeMarker", COMMAND_REMOVE_MARKER)
|
|
41
|
+
.put("addPolyline", COMMAND_ADD_POLYLINE)
|
|
42
|
+
.put("updatePolyline", COMMAND_UPDATE_POLYLINE)
|
|
43
|
+
.put("removePolyline", COMMAND_REMOVE_POLYLINE)
|
|
44
|
+
.put("addPolygon", COMMAND_ADD_POLYGON)
|
|
45
|
+
.put("updatePolygon", COMMAND_UPDATE_POLYGON)
|
|
46
|
+
.put("removePolygon", COMMAND_REMOVE_POLYGON)
|
|
47
|
+
.put("addCircle", COMMAND_ADD_CIRCLE)
|
|
48
|
+
.put("updateCircle", COMMAND_UPDATE_CIRCLE)
|
|
49
|
+
.put("removeCircle", COMMAND_REMOVE_CIRCLE)
|
|
50
|
+
.put("addPath", COMMAND_ADD_PATH)
|
|
51
|
+
.put("updatePath", COMMAND_UPDATE_PATH)
|
|
52
|
+
.put("removePath", COMMAND_REMOVE_PATH)
|
|
53
|
+
.put("addArrowheadPath", COMMAND_ADD_ARROWHEAD_PATH)
|
|
54
|
+
.put("updateArrowheadPath", COMMAND_UPDATE_ARROWHEAD_PATH)
|
|
55
|
+
.put("removeArrowheadPath", COMMAND_REMOVE_ARROWHEAD_PATH)
|
|
56
|
+
.put("addGroundOverlay", COMMAND_ADD_GROUND_OVERLAY)
|
|
57
|
+
.put("updateGroundOverlay", COMMAND_UPDATE_GROUND_OVERLAY)
|
|
58
|
+
.put("removeGroundOverlay", COMMAND_REMOVE_GROUND_OVERLAY)
|
|
59
|
+
.put("addInfoWindow", COMMAND_ADD_INFO_WINDOW)
|
|
60
|
+
.put("updateInfoWindow", COMMAND_UPDATE_INFO_WINDOW)
|
|
61
|
+
.put("removeInfoWindow", COMMAND_REMOVE_INFO_WINDOW)
|
|
62
|
+
.build()
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
override fun receiveCommand(view: GraniteNaverMapView, commandId: Int, args: ReadableArray?) {
|
|
66
|
+
when (commandId) {
|
|
67
|
+
COMMAND_ANIMATE_TO_COORDINATE -> {
|
|
68
|
+
val coord = args?.getMap(0)
|
|
69
|
+
coord?.let {
|
|
70
|
+
val lat = it.getDouble("latitude")
|
|
71
|
+
val lng = it.getDouble("longitude")
|
|
72
|
+
view.animateToCoordinate(lat, lng)
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
COMMAND_ANIMATE_TO_TWO_COORDINATES -> {
|
|
76
|
+
val coord1 = args?.getMap(0)
|
|
77
|
+
val coord2 = args?.getMap(1)
|
|
78
|
+
if (coord1 != null && coord2 != null) {
|
|
79
|
+
view.animateToTwoCoordinates(
|
|
80
|
+
coord1.getDouble("latitude"), coord1.getDouble("longitude"),
|
|
81
|
+
coord2.getDouble("latitude"), coord2.getDouble("longitude")
|
|
82
|
+
)
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
COMMAND_ANIMATE_TO_REGION -> {
|
|
86
|
+
val region = args?.getMap(0)
|
|
87
|
+
region?.let {
|
|
88
|
+
val lat = it.getDouble("latitude")
|
|
89
|
+
val lng = it.getDouble("longitude")
|
|
90
|
+
val latDelta = it.getDouble("latitudeDelta")
|
|
91
|
+
val lngDelta = it.getDouble("longitudeDelta")
|
|
92
|
+
view.animateToRegion(lat, lng, latDelta, lngDelta)
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
COMMAND_SET_LAYER_GROUP_ENABLED -> {
|
|
96
|
+
val group = args?.getString(0)
|
|
97
|
+
val enabled = args?.getBoolean(1) ?: false
|
|
98
|
+
group?.let { view.setLayerGroupEnabled(it, enabled) }
|
|
99
|
+
}
|
|
100
|
+
COMMAND_ADD_MARKER -> {
|
|
101
|
+
val identifier = args?.getString(0)
|
|
102
|
+
val markerData = args?.getMap(1)
|
|
103
|
+
if (identifier != null && markerData != null) {
|
|
104
|
+
view.addMarker(identifier, markerData)
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
COMMAND_UPDATE_MARKER -> {
|
|
108
|
+
val identifier = args?.getString(0)
|
|
109
|
+
val markerData = args?.getMap(1)
|
|
110
|
+
if (identifier != null && markerData != null) {
|
|
111
|
+
view.updateMarker(identifier, markerData)
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
COMMAND_REMOVE_MARKER -> {
|
|
115
|
+
val identifier = args?.getString(0)
|
|
116
|
+
identifier?.let { view.removeMarker(it) }
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
@ReactProp(name = "center")
|
|
122
|
+
fun setCenter(view: GraniteNaverMapView, center: ReadableMap?) {
|
|
123
|
+
center?.let {
|
|
124
|
+
val lat = it.getDouble("latitude")
|
|
125
|
+
val lng = it.getDouble("longitude")
|
|
126
|
+
val zoom = if (it.hasKey("zoom")) it.getDouble("zoom") else 10.0
|
|
127
|
+
val tilt = if (it.hasKey("tilt")) it.getDouble("tilt") else 0.0
|
|
128
|
+
val bearing = if (it.hasKey("bearing")) it.getDouble("bearing") else 0.0
|
|
129
|
+
view.setCenter(lat, lng, zoom, tilt, bearing)
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
@ReactProp(name = "showsMyLocationButton")
|
|
134
|
+
fun setShowsMyLocationButton(view: GraniteNaverMapView, show: Boolean) {
|
|
135
|
+
view.setShowsMyLocationButton(show)
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
@ReactProp(name = "compass")
|
|
139
|
+
fun setCompass(view: GraniteNaverMapView, show: Boolean) {
|
|
140
|
+
view.setCompass(show)
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
@ReactProp(name = "scaleBar")
|
|
144
|
+
fun setScaleBar(view: GraniteNaverMapView, show: Boolean) {
|
|
145
|
+
view.setScaleBar(show)
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
@ReactProp(name = "zoomControl")
|
|
149
|
+
fun setZoomControl(view: GraniteNaverMapView, show: Boolean) {
|
|
150
|
+
view.setZoomControl(show)
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
@ReactProp(name = "mapType")
|
|
154
|
+
fun setMapType(view: GraniteNaverMapView, mapType: Int) {
|
|
155
|
+
view.setMapType(mapType)
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
@ReactProp(name = "buildingHeight", defaultFloat = 1f)
|
|
159
|
+
fun setBuildingHeight(view: GraniteNaverMapView, height: Float) {
|
|
160
|
+
view.setBuildingHeight(height)
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
@ReactProp(name = "nightMode")
|
|
164
|
+
fun setNightMode(view: GraniteNaverMapView, enabled: Boolean) {
|
|
165
|
+
view.setNightMode(enabled)
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
@ReactProp(name = "minZoomLevel", defaultDouble = 0.0)
|
|
169
|
+
fun setMinZoomLevel(view: GraniteNaverMapView, level: Double) {
|
|
170
|
+
view.setMinZoomLevel(level)
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
@ReactProp(name = "maxZoomLevel", defaultDouble = 21.0)
|
|
174
|
+
fun setMaxZoomLevel(view: GraniteNaverMapView, level: Double) {
|
|
175
|
+
view.setMaxZoomLevel(level)
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
@ReactProp(name = "scrollGesturesEnabled", defaultBoolean = true)
|
|
179
|
+
fun setScrollGesturesEnabled(view: GraniteNaverMapView, enabled: Boolean) {
|
|
180
|
+
view.setScrollGesturesEnabled(enabled)
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
@ReactProp(name = "zoomGesturesEnabled", defaultBoolean = true)
|
|
184
|
+
fun setZoomGesturesEnabled(view: GraniteNaverMapView, enabled: Boolean) {
|
|
185
|
+
view.setZoomGesturesEnabled(enabled)
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
@ReactProp(name = "tiltGesturesEnabled", defaultBoolean = true)
|
|
189
|
+
fun setTiltGesturesEnabled(view: GraniteNaverMapView, enabled: Boolean) {
|
|
190
|
+
view.setTiltGesturesEnabled(enabled)
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
@ReactProp(name = "rotateGesturesEnabled", defaultBoolean = true)
|
|
194
|
+
fun setRotateGesturesEnabled(view: GraniteNaverMapView, enabled: Boolean) {
|
|
195
|
+
view.setRotateGesturesEnabled(enabled)
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
@ReactProp(name = "stopGesturesEnabled", defaultBoolean = true)
|
|
199
|
+
fun setStopGesturesEnabled(view: GraniteNaverMapView, enabled: Boolean) {
|
|
200
|
+
view.setStopGesturesEnabled(enabled)
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
@ReactProp(name = "locationTrackingMode")
|
|
204
|
+
fun setLocationTrackingMode(view: GraniteNaverMapView, mode: Int) {
|
|
205
|
+
view.setLocationTrackingMode(mode)
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
@ReactProp(name = "mapPadding")
|
|
209
|
+
fun setMapPadding(view: GraniteNaverMapView, padding: ReadableMap?) {
|
|
210
|
+
padding?.let {
|
|
211
|
+
val top = if (it.hasKey("top")) it.getInt("top") else 0
|
|
212
|
+
val left = if (it.hasKey("left")) it.getInt("left") else 0
|
|
213
|
+
val bottom = if (it.hasKey("bottom")) it.getInt("bottom") else 0
|
|
214
|
+
val right = if (it.hasKey("right")) it.getInt("right") else 0
|
|
215
|
+
view.setMapPadding(top, left, bottom, right)
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
companion object {
|
|
220
|
+
private const val COMMAND_ANIMATE_TO_COORDINATE = 1
|
|
221
|
+
private const val COMMAND_ANIMATE_TO_TWO_COORDINATES = 2
|
|
222
|
+
private const val COMMAND_ANIMATE_TO_REGION = 3
|
|
223
|
+
private const val COMMAND_SET_LAYER_GROUP_ENABLED = 4
|
|
224
|
+
private const val COMMAND_ADD_MARKER = 5
|
|
225
|
+
private const val COMMAND_UPDATE_MARKER = 6
|
|
226
|
+
private const val COMMAND_REMOVE_MARKER = 7
|
|
227
|
+
private const val COMMAND_ADD_POLYLINE = 8
|
|
228
|
+
private const val COMMAND_UPDATE_POLYLINE = 9
|
|
229
|
+
private const val COMMAND_REMOVE_POLYLINE = 10
|
|
230
|
+
private const val COMMAND_ADD_POLYGON = 11
|
|
231
|
+
private const val COMMAND_UPDATE_POLYGON = 12
|
|
232
|
+
private const val COMMAND_REMOVE_POLYGON = 13
|
|
233
|
+
private const val COMMAND_ADD_CIRCLE = 14
|
|
234
|
+
private const val COMMAND_UPDATE_CIRCLE = 15
|
|
235
|
+
private const val COMMAND_REMOVE_CIRCLE = 16
|
|
236
|
+
private const val COMMAND_ADD_PATH = 17
|
|
237
|
+
private const val COMMAND_UPDATE_PATH = 18
|
|
238
|
+
private const val COMMAND_REMOVE_PATH = 19
|
|
239
|
+
private const val COMMAND_ADD_ARROWHEAD_PATH = 20
|
|
240
|
+
private const val COMMAND_UPDATE_ARROWHEAD_PATH = 21
|
|
241
|
+
private const val COMMAND_REMOVE_ARROWHEAD_PATH = 22
|
|
242
|
+
private const val COMMAND_ADD_GROUND_OVERLAY = 23
|
|
243
|
+
private const val COMMAND_UPDATE_GROUND_OVERLAY = 24
|
|
244
|
+
private const val COMMAND_REMOVE_GROUND_OVERLAY = 25
|
|
245
|
+
private const val COMMAND_ADD_INFO_WINDOW = 26
|
|
246
|
+
private const val COMMAND_UPDATE_INFO_WINDOW = 27
|
|
247
|
+
private const val COMMAND_REMOVE_INFO_WINDOW = 28
|
|
248
|
+
}
|
|
249
|
+
}
|