react-native-map4d-map-dtqg 0.1.0 → 0.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.
Files changed (183) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +88 -41
  3. package/android/.gradle/8.9/checksums/checksums.lock +0 -0
  4. package/android/.gradle/8.9/checksums/md5-checksums.bin +0 -0
  5. package/android/.gradle/8.9/checksums/sha1-checksums.bin +0 -0
  6. package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
  7. package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
  8. package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
  9. package/android/.gradle/8.9/gc.properties +0 -0
  10. package/android/.gradle/9.0-milestone-1/checksums/checksums.lock +0 -0
  11. package/android/.gradle/9.0-milestone-1/checksums/md5-checksums.bin +0 -0
  12. package/android/.gradle/9.0-milestone-1/checksums/sha1-checksums.bin +0 -0
  13. package/android/.gradle/9.0-milestone-1/fileChanges/last-build.bin +0 -0
  14. package/android/.gradle/9.0-milestone-1/fileHashes/fileHashes.lock +0 -0
  15. package/android/.gradle/9.0-milestone-1/gc.properties +0 -0
  16. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  17. package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
  18. package/android/.gradle/config.properties +2 -0
  19. package/android/.gradle/vcs-1/gc.properties +0 -0
  20. package/android/.idea/AndroidProjectSystem.xml +6 -0
  21. package/android/.idea/caches/deviceStreaming.xml +1570 -0
  22. package/android/.idea/copilot.data.migration.ask2agent.xml +6 -0
  23. package/android/.idea/gradle.xml +12 -0
  24. package/android/.idea/migrations.xml +10 -0
  25. package/android/.idea/misc.xml +10 -0
  26. package/android/.idea/runConfigurations.xml +17 -0
  27. package/android/.idea/vcs.xml +6 -0
  28. package/android/build.gradle +60 -60
  29. package/android/local.properties +8 -0
  30. package/android/src/main/AndroidManifest.xml +4 -4
  31. package/android/src/main/java/com/reactnativemap4dmap/ImageUtils.java +87 -87
  32. package/android/src/main/java/com/reactnativemap4dmap/Map4dMapModule.java +298 -298
  33. package/android/src/main/java/com/reactnativemap4dmap/Map4dMapPackage.java +35 -35
  34. package/android/src/main/java/com/reactnativemap4dmap/Map4dMapViewManager.java +31 -31
  35. package/android/src/main/java/com/reactnativemap4dmap/RMFBuilding.java +167 -167
  36. package/android/src/main/java/com/reactnativemap4dmap/RMFBuildingManager.java +121 -121
  37. package/android/src/main/java/com/reactnativemap4dmap/RMFCircle.java +105 -105
  38. package/android/src/main/java/com/reactnativemap4dmap/RMFCircleManager.java +121 -121
  39. package/android/src/main/java/com/reactnativemap4dmap/RMFDirectionsRenderer.java +502 -502
  40. package/android/src/main/java/com/reactnativemap4dmap/RMFDirectionsRendererManager.java +143 -143
  41. package/android/src/main/java/com/reactnativemap4dmap/RMFFeature.java +17 -17
  42. package/android/src/main/java/com/reactnativemap4dmap/RMFMapView.java +1172 -1172
  43. package/android/src/main/java/com/reactnativemap4dmap/RMFMapViewManager.java +226 -226
  44. package/android/src/main/java/com/reactnativemap4dmap/RMFMarker.java +412 -412
  45. package/android/src/main/java/com/reactnativemap4dmap/RMFMarkerManager.java +211 -211
  46. package/android/src/main/java/com/reactnativemap4dmap/RMFPOI.java +222 -222
  47. package/android/src/main/java/com/reactnativemap4dmap/RMFPOIManager.java +119 -119
  48. package/android/src/main/java/com/reactnativemap4dmap/RMFPolygon.java +172 -172
  49. package/android/src/main/java/com/reactnativemap4dmap/RMFPolygonManager.java +147 -147
  50. package/android/src/main/java/com/reactnativemap4dmap/RMFPolyline.java +146 -146
  51. package/android/src/main/java/com/reactnativemap4dmap/RMFPolylineManager.java +137 -137
  52. package/android/src/main/java/com/reactnativemap4dmap/RMFTileOverlay.java +95 -95
  53. package/android/src/main/java/com/reactnativemap4dmap/RMFTileOverlayManager.java +64 -64
  54. package/android/src/main/java/com/reactnativemap4dmap/SizeReportingShadowNode.java +31 -31
  55. package/android/src/main/java/com/reactnativemap4dmap/ViewAttacherGroup.java +31 -31
  56. package/android/src/main/java/com/reactnativemap4dmap/ViewChangesTracker.java +70 -70
  57. package/android/src/main/java/vn/map4d/map/annotations/RMFBitmapDescriptor.java +9 -9
  58. package/ios/Map4dMap.h +7 -7
  59. package/ios/Map4dMap.m +14 -14
  60. package/ios/Map4dMapViewManager.m +34 -34
  61. package/ios/RCTConvert+Map4dMap.h +33 -33
  62. package/ios/RCTConvert+Map4dMap.m +112 -112
  63. package/ios/RMFCircle.h +37 -37
  64. package/ios/RMFCircle.m +100 -100
  65. package/ios/RMFCircleManager.h +18 -18
  66. package/ios/RMFCircleManager.m +155 -155
  67. package/ios/RMFCircleMap4d.h +23 -23
  68. package/ios/RMFCircleMap4d.m +13 -13
  69. package/ios/RMFCoordinate.h +22 -22
  70. package/ios/RMFCoordinate.m +13 -13
  71. package/ios/RMFDirectionsMarkerOptions.h +24 -24
  72. package/ios/RMFDirectionsMarkerOptions.m +23 -23
  73. package/ios/RMFDirectionsRenderer.h +47 -47
  74. package/ios/RMFDirectionsRenderer.m +182 -182
  75. package/ios/RMFDirectionsRendererManager.h +17 -17
  76. package/ios/RMFDirectionsRendererManager.m +84 -84
  77. package/ios/RMFDirectionsRendererMap4d.h +21 -21
  78. package/ios/RMFDirectionsRendererMap4d.m +12 -12
  79. package/ios/RMFDummyView.h +6 -6
  80. package/ios/RMFDummyView.m +12 -12
  81. package/ios/RMFEventResponse.h +39 -39
  82. package/ios/RMFEventResponse.m +98 -98
  83. package/ios/RMFIcon.h +24 -24
  84. package/ios/RMFIcon.m +35 -35
  85. package/ios/RMFMapView.h +84 -84
  86. package/ios/RMFMapView.m +376 -376
  87. package/ios/RMFMapViewManager.h +17 -17
  88. package/ios/RMFMapViewManager.m +493 -493
  89. package/ios/RMFMarker.h +57 -57
  90. package/ios/RMFMarker.m +267 -267
  91. package/ios/RMFMarkerManager.h +17 -17
  92. package/ios/RMFMarkerManager.m +156 -156
  93. package/ios/RMFMarkerMap4d.h +19 -19
  94. package/ios/RMFMarkerMap4d.m +13 -13
  95. package/ios/RMFPOI.h +38 -38
  96. package/ios/RMFPOI.m +123 -123
  97. package/ios/RMFPOIManager.h +18 -18
  98. package/ios/RMFPOIManager.m +168 -168
  99. package/ios/RMFPOIMap4d.h +22 -22
  100. package/ios/RMFPOIMap4d.m +12 -12
  101. package/ios/RMFPolygon.h +41 -41
  102. package/ios/RMFPolygon.m +106 -106
  103. package/ios/RMFPolygonManager.h +18 -18
  104. package/ios/RMFPolygonManager.m +141 -141
  105. package/ios/RMFPolygonMap4d.h +23 -23
  106. package/ios/RMFPolygonMap4d.m +15 -15
  107. package/ios/RMFPolyline.h +38 -38
  108. package/ios/RMFPolyline.m +101 -101
  109. package/ios/RMFPolylineManager.h +18 -18
  110. package/ios/RMFPolylineManager.m +139 -139
  111. package/ios/RMFPolylineMap4d.h +22 -22
  112. package/ios/RMFPolylineMap4d.m +15 -15
  113. package/ios/building/RMFBuilding.h +41 -41
  114. package/ios/building/RMFBuilding.m +104 -104
  115. package/ios/building/RMFBuildingManager.h +19 -19
  116. package/ios/building/RMFBuildingManager.m +133 -133
  117. package/ios/building/RMFBuildingMap4d.h +23 -23
  118. package/ios/building/RMFBuildingMap4d.m +15 -15
  119. package/ios/overlays/RMFTileOverlay.h +36 -36
  120. package/ios/overlays/RMFTileOverlay.m +64 -64
  121. package/ios/overlays/RMFTileOverlayManager.h +17 -17
  122. package/ios/overlays/RMFTileOverlayManager.m +27 -27
  123. package/lib/commonjs/components/MFBuilding.js +26 -26
  124. package/lib/commonjs/components/MFBuilding.js.map +1 -1
  125. package/lib/commonjs/components/MFCircle.js +20 -20
  126. package/lib/commonjs/components/MFCircle.js.map +1 -1
  127. package/lib/commonjs/components/MFDirectionsRenderer.js +32 -32
  128. package/lib/commonjs/components/MFDirectionsRenderer.js.map +1 -1
  129. package/lib/commonjs/components/MFMapView.js +133 -71
  130. package/lib/commonjs/components/MFMapView.js.map +1 -1
  131. package/lib/commonjs/components/MFMarker.js +35 -35
  132. package/lib/commonjs/components/MFMarker.js.map +1 -1
  133. package/lib/commonjs/components/MFPOI.js +20 -20
  134. package/lib/commonjs/components/MFPOI.js.map +1 -1
  135. package/lib/commonjs/components/MFPolygon.js +22 -22
  136. package/lib/commonjs/components/MFPolygon.js.map +1 -1
  137. package/lib/commonjs/components/MFPolyline.js +18 -18
  138. package/lib/commonjs/components/MFPolyline.js.map +1 -1
  139. package/lib/commonjs/components/MFTileOverlay.js +9 -9
  140. package/lib/commonjs/components/MFTileOverlay.js.map +1 -1
  141. package/lib/commonjs/components/Map4dMapView.js.map +1 -1
  142. package/lib/commonjs/components/extends/AreaFocuser.js +311 -0
  143. package/lib/commonjs/components/extends/AreaFocuser.js.map +1 -0
  144. package/lib/commonjs/index.js +8 -0
  145. package/lib/commonjs/index.js.map +1 -1
  146. package/lib/module/components/MFBuilding.js +26 -26
  147. package/lib/module/components/MFBuilding.js.map +1 -1
  148. package/lib/module/components/MFCircle.js +20 -20
  149. package/lib/module/components/MFCircle.js.map +1 -1
  150. package/lib/module/components/MFDirectionsRenderer.js +32 -32
  151. package/lib/module/components/MFDirectionsRenderer.js.map +1 -1
  152. package/lib/module/components/MFMapView.js +131 -71
  153. package/lib/module/components/MFMapView.js.map +1 -1
  154. package/lib/module/components/MFMarker.js +35 -35
  155. package/lib/module/components/MFMarker.js.map +1 -1
  156. package/lib/module/components/MFPOI.js +20 -20
  157. package/lib/module/components/MFPOI.js.map +1 -1
  158. package/lib/module/components/MFPolygon.js +22 -22
  159. package/lib/module/components/MFPolygon.js.map +1 -1
  160. package/lib/module/components/MFPolyline.js +18 -18
  161. package/lib/module/components/MFPolyline.js.map +1 -1
  162. package/lib/module/components/MFTileOverlay.js +9 -9
  163. package/lib/module/components/MFTileOverlay.js.map +1 -1
  164. package/lib/module/components/Map4dMapView.js.map +1 -1
  165. package/lib/module/components/extends/AreaFocuser.js +302 -0
  166. package/lib/module/components/extends/AreaFocuser.js.map +1 -0
  167. package/lib/module/index.js +2 -1
  168. package/lib/module/index.js.map +1 -1
  169. package/lib/typescript/components/Map4dMapView.d.ts +7 -7
  170. package/package.json +152 -152
  171. package/react-native-map4d-map.podspec +20 -20
  172. package/src/components/MFBuilding.js +187 -187
  173. package/src/components/MFCircle.js +173 -173
  174. package/src/components/MFDirectionsRenderer.js +237 -237
  175. package/src/components/MFMapView.js +447 -373
  176. package/src/components/MFMarker.js +246 -246
  177. package/src/components/MFPOI.js +184 -184
  178. package/src/components/MFPolygon.js +186 -186
  179. package/src/components/MFPolyline.js +172 -172
  180. package/src/components/MFTileOverlay.js +45 -45
  181. package/src/components/Map4dMapView.tsx +26 -26
  182. package/src/components/extends/AreaFocuser.js +339 -0
  183. package/src/index.js +23 -21
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="Ask2AgentMigrationStateService">
4
+ <option name="migrationStatus" value="COMPLETED" />
5
+ </component>
6
+ </project>
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="GradleSettings">
4
+ <option name="linkedExternalProjectsSettings">
5
+ <GradleProjectSettings>
6
+ <option name="testRunner" value="CHOOSE_PER_TEST" />
7
+ <option name="externalProjectPath" value="$PROJECT_DIR$" />
8
+ <option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
9
+ </GradleProjectSettings>
10
+ </option>
11
+ </component>
12
+ </project>
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectMigrations">
4
+ <option name="MigrateToGradleLocalJavaHome">
5
+ <set>
6
+ <option value="$PROJECT_DIR$" />
7
+ </set>
8
+ </option>
9
+ </component>
10
+ </project>
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ExternalStorageConfigurationManager" enabled="true" />
4
+ <component name="ProjectRootManager">
5
+ <output url="file://$PROJECT_DIR$/build/classes" />
6
+ </component>
7
+ <component name="ProjectType">
8
+ <option name="id" value="Android" />
9
+ </component>
10
+ </project>
@@ -0,0 +1,17 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="RunConfigurationProducerService">
4
+ <option name="ignoredProducers">
5
+ <set>
6
+ <option value="com.intellij.execution.junit.AbstractAllInDirectoryConfigurationProducer" />
7
+ <option value="com.intellij.execution.junit.AllInPackageConfigurationProducer" />
8
+ <option value="com.intellij.execution.junit.PatternConfigurationProducer" />
9
+ <option value="com.intellij.execution.junit.TestInClassConfigurationProducer" />
10
+ <option value="com.intellij.execution.junit.UniqueIdConfigurationProducer" />
11
+ <option value="com.intellij.execution.junit.testDiscovery.JUnitTestDiscoveryConfigurationProducer" />
12
+ <option value="org.jetbrains.kotlin.idea.junit.KotlinJUnitRunConfigurationProducer" />
13
+ <option value="org.jetbrains.kotlin.idea.junit.KotlinPatternConfigurationProducer" />
14
+ </set>
15
+ </option>
16
+ </component>
17
+ </project>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
5
+ </component>
6
+ </project>
@@ -1,60 +1,60 @@
1
- buildscript {
2
- if (project == rootProject) {
3
- repositories {
4
- google()
5
- mavenCentral()
6
- }
7
-
8
- dependencies {
9
- classpath 'com.android.tools.build:gradle:3.5.3'
10
- }
11
- }
12
- }
13
-
14
- apply plugin: 'com.android.library'
15
-
16
- def safeExtGet(prop, fallback) {
17
- rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
18
- }
19
-
20
- android {
21
- compileSdkVersion safeExtGet('Map4dMap_compileSdkVersion', 30)
22
- defaultConfig {
23
- minSdkVersion safeExtGet('Map4dMap_minSdkVersion', 21)
24
- targetSdkVersion safeExtGet('Map4dMap_targetSdkVersion', 30)
25
- versionCode 1
26
- versionName "1.0"
27
-
28
- }
29
-
30
- buildTypes {
31
- release {
32
- minifyEnabled false
33
- }
34
- }
35
- lintOptions {
36
- disable 'GradleCompatible'
37
- }
38
- compileOptions {
39
- sourceCompatibility JavaVersion.VERSION_1_8
40
- targetCompatibility JavaVersion.VERSION_1_8
41
- }
42
- }
43
-
44
- repositories {
45
- mavenLocal()
46
- maven {
47
- // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
48
- url("$rootDir/../node_modules/react-native/android")
49
- }
50
- google()
51
- mavenCentral()
52
- }
53
-
54
- dependencies {
55
- //noinspection GradleDynamicVersion
56
- implementation "com.facebook.react:react-native:+" // From node_modules
57
- implementation 'vn.map4d:Map4dTypes:1.1.+'
58
- implementation 'vn.map4d:Map4dMapDTQG:0.1.+'
59
- implementation 'vn.map4d:Map4dMapUtils:0.0.+'
60
- }
1
+ buildscript {
2
+ if (project == rootProject) {
3
+ repositories {
4
+ google()
5
+ mavenCentral()
6
+ }
7
+
8
+ dependencies {
9
+ classpath 'com.android.tools.build:gradle:3.5.3'
10
+ }
11
+ }
12
+ }
13
+
14
+ apply plugin: 'com.android.library'
15
+
16
+ def safeExtGet(prop, fallback) {
17
+ rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
18
+ }
19
+
20
+ android {
21
+ compileSdkVersion safeExtGet('Map4dMap_compileSdkVersion', 30)
22
+ defaultConfig {
23
+ minSdkVersion safeExtGet('Map4dMap_minSdkVersion', 21)
24
+ targetSdkVersion safeExtGet('Map4dMap_targetSdkVersion', 30)
25
+ versionCode 1
26
+ versionName "1.0"
27
+
28
+ }
29
+
30
+ buildTypes {
31
+ release {
32
+ minifyEnabled false
33
+ }
34
+ }
35
+ lintOptions {
36
+ disable 'GradleCompatible'
37
+ }
38
+ compileOptions {
39
+ sourceCompatibility JavaVersion.VERSION_1_8
40
+ targetCompatibility JavaVersion.VERSION_1_8
41
+ }
42
+ }
43
+
44
+ repositories {
45
+ mavenLocal()
46
+ maven {
47
+ // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
48
+ url("$rootDir/../node_modules/react-native/android")
49
+ }
50
+ google()
51
+ mavenCentral()
52
+ }
53
+
54
+ dependencies {
55
+ //noinspection GradleDynamicVersion
56
+ implementation "com.facebook.react:react-native:+" // From node_modules
57
+ implementation 'vn.map4d:Map4dTypes:1.1.+'
58
+ implementation 'vn.map4d:Map4dMapDTQG:0.1.+'
59
+ implementation 'vn.map4d:Map4dMapUtils:0.0.+'
60
+ }
@@ -0,0 +1,8 @@
1
+ ## This file must *NOT* be checked into Version Control Systems,
2
+ # as it contains information specific to your local configuration.
3
+ #
4
+ # Location of the SDK. This is only used by Gradle.
5
+ # For customization when using a Version Control System, please read the
6
+ # header note.
7
+ #Wed Apr 15 14:44:36 ICT 2026
8
+ sdk.dir=D\:\\ANDROID_STUDIO_COMPONENTS\\Sdk
@@ -1,4 +1,4 @@
1
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2
- package="com.reactnativemap4dmap">
3
-
4
- </manifest>
1
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2
+ package="com.reactnativemap4dmap">
3
+
4
+ </manifest>
@@ -1,87 +1,87 @@
1
- package com.reactnativemap4dmap;
2
-
3
- import android.content.Context;
4
- import android.graphics.Bitmap;
5
- import android.graphics.Canvas;
6
- import android.graphics.drawable.BitmapDrawable;
7
- import android.graphics.drawable.Drawable;
8
- import android.graphics.drawable.VectorDrawable;
9
- import android.os.Build;
10
- import android.util.DisplayMetrics;
11
- import android.view.View;
12
- import android.view.WindowManager;
13
-
14
- import androidx.core.content.ContextCompat;
15
- import androidx.core.graphics.drawable.DrawableCompat;
16
-
17
- import vn.map4d.map.annotations.MFBitmapDescriptor;
18
- import vn.map4d.map.annotations.MFBitmapDescriptorFactory;
19
- import vn.map4d.map.annotations.RMFBitmapDescriptor;
20
- import vn.map4d.map.core.MapContext;
21
-
22
- class ImageUtils {
23
-
24
- private static DisplayMetrics metrics;
25
-
26
- static {
27
- final DisplayMetrics metrics = new DisplayMetrics();
28
- WindowManager wm = (WindowManager) MapContext.getContext().getSystemService(Context.WINDOW_SERVICE);
29
-
30
- wm.getDefaultDisplay().getMetrics(metrics);
31
- ImageUtils.metrics = metrics;
32
-
33
- DisplayMetrics realMetrics = null;
34
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
35
- realMetrics = new DisplayMetrics();
36
- wm.getDefaultDisplay().getRealMetrics(realMetrics);
37
- }
38
- if (realMetrics != null) {
39
- ImageUtils.metrics = realMetrics;
40
- }
41
- }
42
-
43
- static int getDrawableResourceByName(View view, String name) {
44
- return view.getResources().getIdentifier(
45
- name,
46
- "drawable",
47
- view.getContext().getPackageName());
48
- }
49
-
50
- static MFBitmapDescriptor getBitmapDescriptorByName(View view, String name) {
51
- return MFBitmapDescriptorFactory.fromResource(getDrawableResourceByName(view, name));
52
- }
53
-
54
- static MFBitmapDescriptor getBitmapByName(View view, String name) {
55
- return getBitmapByName(view, name, -1, -1);
56
- }
57
-
58
- static MFBitmapDescriptor getBitmapByName(View view, String name, int width, int height) {
59
- int resourceId = getDrawableResourceByName(view, name);
60
- Drawable drawable = ContextCompat.getDrawable(MapContext.getContext(), resourceId);
61
- if (drawable instanceof BitmapDrawable || drawable instanceof VectorDrawable) {
62
- Bitmap bitmap = createBitmapFromDrawable(drawable, width, height);
63
- return RMFBitmapDescriptor.create(bitmap, ImageUtils.metrics.densityDpi);
64
- }
65
- else {
66
- throw new IllegalArgumentException("The resource provided must be a Bitmap.");
67
- }
68
- }
69
-
70
- private static Bitmap createBitmapFromDrawable(Drawable drawable, int width, int height) {
71
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
72
- drawable = (DrawableCompat.wrap(drawable)).mutate();
73
- }
74
- int tWidth = width <= 0 ? drawable.getIntrinsicWidth(): width;
75
- int tHeight = height <= 0 ? drawable.getIntrinsicHeight(): height;
76
-
77
- Bitmap bitmap = Bitmap.createBitmap(
78
- tWidth,
79
- tHeight,
80
- Bitmap.Config.ARGB_8888);
81
- Canvas canvas = new Canvas(bitmap);
82
- drawable.setBounds(0, 0, tWidth, tHeight);
83
- drawable.draw(canvas);
84
-
85
- return bitmap;
86
- }
87
- }
1
+ package com.reactnativemap4dmap;
2
+
3
+ import android.content.Context;
4
+ import android.graphics.Bitmap;
5
+ import android.graphics.Canvas;
6
+ import android.graphics.drawable.BitmapDrawable;
7
+ import android.graphics.drawable.Drawable;
8
+ import android.graphics.drawable.VectorDrawable;
9
+ import android.os.Build;
10
+ import android.util.DisplayMetrics;
11
+ import android.view.View;
12
+ import android.view.WindowManager;
13
+
14
+ import androidx.core.content.ContextCompat;
15
+ import androidx.core.graphics.drawable.DrawableCompat;
16
+
17
+ import vn.map4d.map.annotations.MFBitmapDescriptor;
18
+ import vn.map4d.map.annotations.MFBitmapDescriptorFactory;
19
+ import vn.map4d.map.annotations.RMFBitmapDescriptor;
20
+ import vn.map4d.map.core.MapContext;
21
+
22
+ class ImageUtils {
23
+
24
+ private static DisplayMetrics metrics;
25
+
26
+ static {
27
+ final DisplayMetrics metrics = new DisplayMetrics();
28
+ WindowManager wm = (WindowManager) MapContext.getContext().getSystemService(Context.WINDOW_SERVICE);
29
+
30
+ wm.getDefaultDisplay().getMetrics(metrics);
31
+ ImageUtils.metrics = metrics;
32
+
33
+ DisplayMetrics realMetrics = null;
34
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
35
+ realMetrics = new DisplayMetrics();
36
+ wm.getDefaultDisplay().getRealMetrics(realMetrics);
37
+ }
38
+ if (realMetrics != null) {
39
+ ImageUtils.metrics = realMetrics;
40
+ }
41
+ }
42
+
43
+ static int getDrawableResourceByName(View view, String name) {
44
+ return view.getResources().getIdentifier(
45
+ name,
46
+ "drawable",
47
+ view.getContext().getPackageName());
48
+ }
49
+
50
+ static MFBitmapDescriptor getBitmapDescriptorByName(View view, String name) {
51
+ return MFBitmapDescriptorFactory.fromResource(getDrawableResourceByName(view, name));
52
+ }
53
+
54
+ static MFBitmapDescriptor getBitmapByName(View view, String name) {
55
+ return getBitmapByName(view, name, -1, -1);
56
+ }
57
+
58
+ static MFBitmapDescriptor getBitmapByName(View view, String name, int width, int height) {
59
+ int resourceId = getDrawableResourceByName(view, name);
60
+ Drawable drawable = ContextCompat.getDrawable(MapContext.getContext(), resourceId);
61
+ if (drawable instanceof BitmapDrawable || drawable instanceof VectorDrawable) {
62
+ Bitmap bitmap = createBitmapFromDrawable(drawable, width, height);
63
+ return RMFBitmapDescriptor.create(bitmap, ImageUtils.metrics.densityDpi);
64
+ }
65
+ else {
66
+ throw new IllegalArgumentException("The resource provided must be a Bitmap.");
67
+ }
68
+ }
69
+
70
+ private static Bitmap createBitmapFromDrawable(Drawable drawable, int width, int height) {
71
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
72
+ drawable = (DrawableCompat.wrap(drawable)).mutate();
73
+ }
74
+ int tWidth = width <= 0 ? drawable.getIntrinsicWidth(): width;
75
+ int tHeight = height <= 0 ? drawable.getIntrinsicHeight(): height;
76
+
77
+ Bitmap bitmap = Bitmap.createBitmap(
78
+ tWidth,
79
+ tHeight,
80
+ Bitmap.Config.ARGB_8888);
81
+ Canvas canvas = new Canvas(bitmap);
82
+ drawable.setBounds(0, 0, tWidth, tHeight);
83
+ drawable.draw(canvas);
84
+
85
+ return bitmap;
86
+ }
87
+ }