expo-gaode-map-navigation 2.0.12-next.0 → 2.0.13
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/README.md +296 -7
- package/android/build.gradle +12 -4
- package/android/src/main/AndroidManifest.xml +10 -1
- package/android/src/main/cpp/cluster_jni.cpp +56 -0
- package/android/src/main/java/expo/modules/gaodemap/map/ExpoGaodeMapModule.kt +49 -8
- package/android/src/main/java/expo/modules/gaodemap/map/ExpoGaodeMapOfflineModule.kt +83 -15
- package/android/src/main/java/expo/modules/gaodemap/map/ExpoGaodeMapView.kt +13 -3
- package/android/src/main/java/expo/modules/gaodemap/map/managers/UIManager.kt +36 -39
- package/android/src/main/java/expo/modules/gaodemap/map/modules/SDKInitializer.kt +23 -17
- package/android/src/main/java/expo/modules/gaodemap/map/overlays/ClusterView.kt +5 -2
- package/android/src/main/java/expo/modules/gaodemap/map/overlays/HeatMapView.kt +122 -10
- package/android/src/main/java/expo/modules/gaodemap/map/overlays/HeatMapViewModule.kt +2 -2
- package/android/src/main/java/expo/modules/gaodemap/map/overlays/MarkerView.kt +37 -25
- package/android/src/main/java/expo/modules/gaodemap/map/overlays/MarkerViewModule.kt +6 -6
- package/android/src/main/java/expo/modules/gaodemap/map/search/ExpoGaodeMapSearchModule.kt +751 -0
- package/android/src/main/java/expo/modules/gaodemap/map/utils/GeometryUtils.kt +103 -0
- package/android/src/main/java/expo/modules/gaodemap/navigation/ExpoGaodeMapNaviView.kt +1408 -394
- package/android/src/main/java/expo/modules/gaodemap/navigation/ExpoGaodeMapNaviViewModule.kt +121 -1
- package/android/src/main/java/expo/modules/gaodemap/navigation/ExpoGaodeMapNavigationModule.kt +14 -28
- package/android/src/main/java/expo/modules/gaodemap/navigation/listeners/IndependentRouteListener.kt +28 -3
- package/android/src/main/java/expo/modules/gaodemap/navigation/listeners/RouteCalculateListener.kt +2 -2
- package/android/src/main/java/expo/modules/gaodemap/navigation/managers/IndependentRouteManager.kt +114 -15
- package/android/src/main/java/expo/modules/gaodemap/navigation/routes/drive/DriveTruckRouteCalculator.kt +24 -35
- package/android/src/main/java/expo/modules/gaodemap/navigation/services/IndependentRouteService.kt +50 -36
- package/android/src/main/java/expo/modules/gaodemap/navigation/services/NavigationForegroundService.kt +661 -0
- package/android/src/main/java/expo/modules/gaodemap/navigation/utils/Converters.kt +21 -12
- package/android/src/main/res/drawable/ic_nav_notification_small.xml +10 -0
- package/android/src/main/res/drawable/landback_0.png +0 -0
- package/android/src/main/res/drawable/landback_1.png +0 -0
- package/android/src/main/res/drawable/landback_2.png +0 -0
- package/android/src/main/res/drawable/landback_3.png +0 -0
- package/android/src/main/res/drawable/landback_4.png +0 -0
- package/android/src/main/res/drawable/landback_5.png +0 -0
- package/android/src/main/res/drawable/landback_6.png +0 -0
- package/android/src/main/res/drawable/landback_7.png +0 -0
- package/android/src/main/res/drawable/landback_8.png +0 -0
- package/android/src/main/res/drawable/landback_9.png +0 -0
- package/android/src/main/res/drawable/landback_a.png +0 -0
- package/android/src/main/res/drawable/landback_b.png +0 -0
- package/android/src/main/res/drawable/landback_c.png +0 -0
- package/android/src/main/res/drawable/landback_d.png +0 -0
- package/android/src/main/res/drawable/landback_e.png +0 -0
- package/android/src/main/res/drawable/landback_f.png +0 -0
- package/android/src/main/res/drawable/landback_g.png +0 -0
- package/android/src/main/res/drawable/landback_h.png +0 -0
- package/android/src/main/res/drawable/landback_i.png +0 -0
- package/android/src/main/res/drawable/landback_j.png +0 -0
- package/android/src/main/res/drawable/landback_k.png +0 -0
- package/android/src/main/res/drawable/landback_l.png +0 -0
- package/android/src/main/res/drawable/landfront_0.png +0 -0
- package/android/src/main/res/drawable/landfront_00.png +0 -0
- package/android/src/main/res/drawable/landfront_1.png +0 -0
- package/android/src/main/res/drawable/landfront_11.png +0 -0
- package/android/src/main/res/drawable/landfront_20.png +0 -0
- package/android/src/main/res/drawable/landfront_21.png +0 -0
- package/android/src/main/res/drawable/landfront_22.png +0 -0
- package/android/src/main/res/drawable/landfront_3.png +0 -0
- package/android/src/main/res/drawable/landfront_33.png +0 -0
- package/android/src/main/res/drawable/landfront_40.png +0 -0
- package/android/src/main/res/drawable/landfront_43.png +0 -0
- package/android/src/main/res/drawable/landfront_44.png +0 -0
- package/android/src/main/res/drawable/landfront_5.png +0 -0
- package/android/src/main/res/drawable/landfront_55.png +0 -0
- package/android/src/main/res/drawable/landfront_61.png +0 -0
- package/android/src/main/res/drawable/landfront_63.png +0 -0
- package/android/src/main/res/drawable/landfront_66.png +0 -0
- package/android/src/main/res/drawable/landfront_70.png +0 -0
- package/android/src/main/res/drawable/landfront_71.png +0 -0
- package/android/src/main/res/drawable/landfront_73.png +0 -0
- package/android/src/main/res/drawable/landfront_77.png +0 -0
- package/android/src/main/res/drawable/landfront_8.png +0 -0
- package/android/src/main/res/drawable/landfront_88.png +0 -0
- package/android/src/main/res/drawable/landfront_90.png +0 -0
- package/android/src/main/res/drawable/landfront_95.png +0 -0
- package/android/src/main/res/drawable/landfront_99.png +0 -0
- package/android/src/main/res/drawable/landfront_a0.png +0 -0
- package/android/src/main/res/drawable/landfront_a8.png +0 -0
- package/android/src/main/res/drawable/landfront_aa.png +0 -0
- package/android/src/main/res/drawable/landfront_b1.png +0 -0
- package/android/src/main/res/drawable/landfront_b5.png +0 -0
- package/android/src/main/res/drawable/landfront_bb.png +0 -0
- package/android/src/main/res/drawable/landfront_c3.png +0 -0
- package/android/src/main/res/drawable/landfront_c8.png +0 -0
- package/android/src/main/res/drawable/landfront_cc.png +0 -0
- package/android/src/main/res/drawable/landfront_d.png +0 -0
- package/android/src/main/res/drawable/landfront_dd.png +0 -0
- package/android/src/main/res/drawable/landfront_e1.png +0 -0
- package/android/src/main/res/drawable/landfront_e5.png +0 -0
- package/android/src/main/res/drawable/landfront_ee.png +0 -0
- package/android/src/main/res/drawable/landfront_f0.png +0 -0
- package/android/src/main/res/drawable/landfront_f1.png +0 -0
- package/android/src/main/res/drawable/landfront_f5.png +0 -0
- package/android/src/main/res/drawable/landfront_ff.png +0 -0
- package/android/src/main/res/drawable/landfront_g3.png +0 -0
- package/android/src/main/res/drawable/landfront_g5.png +0 -0
- package/android/src/main/res/drawable/landfront_gg.png +0 -0
- package/android/src/main/res/drawable/landfront_h1.png +0 -0
- package/android/src/main/res/drawable/landfront_h3.png +0 -0
- package/android/src/main/res/drawable/landfront_h5.png +0 -0
- package/android/src/main/res/drawable/landfront_hh.png +0 -0
- package/android/src/main/res/drawable/landfront_i0.png +0 -0
- package/android/src/main/res/drawable/landfront_i3.png +0 -0
- package/android/src/main/res/drawable/landfront_i5.png +0 -0
- package/android/src/main/res/drawable/landfront_ii.png +0 -0
- package/android/src/main/res/drawable/landfront_j1.png +0 -0
- package/android/src/main/res/drawable/landfront_j8.png +0 -0
- package/android/src/main/res/drawable/landfront_jj.png +0 -0
- package/android/src/main/res/drawable/landfront_kk.png +0 -0
- package/android/src/main/res/drawable/landfront_ll.png +0 -0
- package/android/src/main/res/drawable/nav_notification_brand_icon.xml +16 -0
- package/android/src/main/res/drawable/navi_arrow_leftline.png +0 -0
- package/android/src/main/res/drawable/navi_lane_shape_bg_center.xml +5 -0
- package/android/src/main/res/drawable/navi_lane_shape_bg_left.xml +8 -0
- package/android/src/main/res/drawable/navi_lane_shape_bg_over.xml +6 -0
- package/android/src/main/res/drawable/navi_lane_shape_bg_right.xml +8 -0
- package/android/src/main/res/drawable-nodpi/nav_tracker_car.png +0 -0
- package/build/ExpoGaodeMapNaviView.d.ts +16 -0
- package/build/ExpoGaodeMapNaviView.d.ts.map +1 -1
- package/build/ExpoGaodeMapNaviView.js +74 -1
- package/build/ExpoGaodeMapNaviView.js.map +1 -1
- package/build/index.d.ts +56 -8
- package/build/index.d.ts.map +1 -1
- package/build/index.js +452 -10
- package/build/index.js.map +1 -1
- package/build/map/ExpoGaodeMapModule.d.ts +15 -13
- package/build/map/ExpoGaodeMapModule.d.ts.map +1 -1
- package/build/map/ExpoGaodeMapModule.js +31 -39
- package/build/map/ExpoGaodeMapModule.js.map +1 -1
- package/build/map/ExpoGaodeMapOfflineModule.d.ts +5 -0
- package/build/map/ExpoGaodeMapOfflineModule.d.ts.map +1 -1
- package/build/map/ExpoGaodeMapOfflineModule.js.map +1 -1
- package/build/map/ExpoGaodeMapView.d.ts +3 -4
- package/build/map/ExpoGaodeMapView.d.ts.map +1 -1
- package/build/map/ExpoGaodeMapView.js +28 -25
- package/build/map/ExpoGaodeMapView.js.map +1 -1
- package/build/map/components/overlays/Circle.d.ts.map +1 -1
- package/build/map/components/overlays/Circle.js +1 -30
- package/build/map/components/overlays/Circle.js.map +1 -1
- package/build/map/components/overlays/Cluster.d.ts.map +1 -1
- package/build/map/components/overlays/Cluster.js +1 -42
- package/build/map/components/overlays/Cluster.js.map +1 -1
- package/build/map/components/overlays/HeatMap.d.ts.map +1 -1
- package/build/map/components/overlays/HeatMap.js +21 -21
- package/build/map/components/overlays/HeatMap.js.map +1 -1
- package/build/map/components/overlays/Marker.d.ts.map +1 -1
- package/build/map/components/overlays/Marker.js +76 -80
- package/build/map/components/overlays/Marker.js.map +1 -1
- package/build/map/components/overlays/Polygon.d.ts.map +1 -1
- package/build/map/components/overlays/Polygon.js +1 -25
- package/build/map/components/overlays/Polygon.js.map +1 -1
- package/build/map/components/overlays/Polyline.d.ts.map +1 -1
- package/build/map/components/overlays/Polyline.js +1 -31
- package/build/map/components/overlays/Polyline.js.map +1 -1
- package/build/map/index.d.ts +9 -2
- package/build/map/index.d.ts.map +1 -1
- package/build/map/index.js +9 -2
- package/build/map/index.js.map +1 -1
- package/build/map/search/ExpoGaodeMapSearch.types.d.ts +340 -0
- package/build/map/search/ExpoGaodeMapSearch.types.d.ts.map +1 -0
- package/build/map/search/ExpoGaodeMapSearch.types.js +19 -0
- package/build/map/search/ExpoGaodeMapSearch.types.js.map +1 -0
- package/build/map/search/ExpoGaodeMapSearchModule.d.ts +74 -0
- package/build/map/search/ExpoGaodeMapSearchModule.d.ts.map +1 -0
- package/build/map/search/ExpoGaodeMapSearchModule.js +47 -0
- package/build/map/search/ExpoGaodeMapSearchModule.js.map +1 -0
- package/build/map/search/index.d.ts +156 -0
- package/build/map/search/index.d.ts.map +1 -0
- package/build/map/search/index.js +171 -0
- package/build/map/search/index.js.map +1 -0
- package/build/map/types/index.d.ts +2 -2
- package/build/map/types/index.d.ts.map +1 -1
- package/build/map/types/index.js.map +1 -1
- package/build/map/types/map-view.types.d.ts +4 -2
- package/build/map/types/map-view.types.d.ts.map +1 -1
- package/build/map/types/map-view.types.js.map +1 -1
- package/build/map/types/native-module.types.d.ts +11 -12
- package/build/map/types/native-module.types.d.ts.map +1 -1
- package/build/map/types/native-module.types.js.map +1 -1
- package/build/map/types/overlays.types.d.ts +9 -14
- package/build/map/types/overlays.types.d.ts.map +1 -1
- package/build/map/types/overlays.types.js.map +1 -1
- package/build/map/types/route-playback.types.d.ts +16 -0
- package/build/map/types/route-playback.types.d.ts.map +1 -1
- package/build/map/types/route-playback.types.js.map +1 -1
- package/build/map/utils/ErrorHandler.js +11 -11
- package/build/map/utils/ErrorHandler.js.map +1 -1
- package/build/map/utils/OfflineMapManager.d.ts +4 -0
- package/build/map/utils/OfflineMapManager.d.ts.map +1 -1
- package/build/map/utils/OfflineMapManager.js +6 -0
- package/build/map/utils/OfflineMapManager.js.map +1 -1
- package/build/types/coordinates.types.d.ts +3 -0
- package/build/types/coordinates.types.d.ts.map +1 -1
- package/build/types/coordinates.types.js.map +1 -1
- package/build/types/independent.types.d.ts +111 -12
- package/build/types/independent.types.d.ts.map +1 -1
- package/build/types/independent.types.js.map +1 -1
- package/build/types/native-module.types.d.ts +1 -1
- package/build/types/native-module.types.js.map +1 -1
- package/build/types/naviview.types.d.ts +304 -14
- package/build/types/naviview.types.d.ts.map +1 -1
- package/build/types/naviview.types.js.map +1 -1
- package/build/types/route.types.d.ts +12 -2
- package/build/types/route.types.d.ts.map +1 -1
- package/build/types/route.types.js.map +1 -1
- package/expo-module.config.json +4 -2
- package/ios/ExpoGaodeMapNaviView.swift +2331 -201
- package/ios/ExpoGaodeMapNaviViewModule.swift +109 -1
- package/ios/ExpoGaodeMapNavigation.podspec +2 -1
- package/ios/ExpoGaodeMapNavigationModule.swift +7 -5
- package/ios/managers/IndependentRouteManager.swift +90 -26
- package/ios/map/ExpoGaodeMapModule.swift +72 -21
- package/ios/map/ExpoGaodeMapOfflineModule.swift +61 -0
- package/ios/map/ExpoGaodeMapSearchModule.swift +773 -0
- package/ios/map/ExpoGaodeMapView.swift +23 -5
- package/ios/map/GaodeMapPrivacyManager.swift +26 -18
- package/ios/map/cpp/GeometryEngine.cpp +112 -0
- package/ios/map/cpp/GeometryEngine.hpp +21 -0
- package/ios/map/modules/LocationManager.swift +37 -5
- package/ios/map/overlays/MarkerView.swift +11 -11
- package/ios/map/overlays/MarkerViewModule.swift +4 -4
- package/ios/map/overlays/PolylineView.swift +6 -12
- package/ios/map/utils/ClusterNative.h +8 -0
- package/ios/map/utils/ClusterNative.mm +27 -0
- package/ios/map/utils/PermissionManager.swift +115 -6
- package/ios/routes/drive/DriveTruckRouteCalculator.swift +165 -77
- package/ios/routes/walkride/WalkRideRouteCalculator.swift +127 -1
- package/ios/services/IndependentRouteService.swift +198 -39
- package/ios/services/NavigationLiveActivityAttributes.swift +48 -0
- package/ios/services/NavigationLiveActivityManager.swift +359 -0
- package/package.json +22 -7
- package/plugin/build/withGaodeMap.d.ts +8 -0
- package/plugin/build/withGaodeMap.js +60 -4
- package/scripts/check-expo-modules.js +68 -0
- package/shared/cpp/GeometryEngine.cpp +112 -0
- package/shared/cpp/GeometryEngine.hpp +21 -0
- package/widget-template/README.md +46 -0
- package/widget-template/ios/NavigationLiveActivityWidget.swift +367 -0
- package/android/src/main/java/expo/modules/gaodemap/navigation/managers/RouteCalculator.kt +0 -173
|
@@ -99,16 +99,16 @@ class MarkerView(context: Context, appContext: AppContext) : ExpoView(context, a
|
|
|
99
99
|
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
|
|
100
100
|
val selfParams = this.layoutParams
|
|
101
101
|
if (selfParams == null || selfParams !is LayoutParams) {
|
|
102
|
-
val width = if (
|
|
103
|
-
|
|
102
|
+
val width = if (contentWidth > 0) {
|
|
103
|
+
contentWidth
|
|
104
104
|
} else if (selfParams != null && selfParams.width > 0) {
|
|
105
105
|
selfParams.width
|
|
106
106
|
} else {
|
|
107
107
|
LayoutParams.WRAP_CONTENT
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
-
val height = if (
|
|
111
|
-
|
|
110
|
+
val height = if (contentHeight > 0) {
|
|
111
|
+
contentHeight
|
|
112
112
|
} else if (selfParams != null && selfParams.height > 0) {
|
|
113
113
|
selfParams.height
|
|
114
114
|
} else {
|
|
@@ -140,12 +140,12 @@ class MarkerView(context: Context, appContext: AppContext) : ExpoView(context, a
|
|
|
140
140
|
val fallbackHeightSize = resolveExplicitMeasureSize(parentHeightSize, false)
|
|
141
141
|
|
|
142
142
|
val contentWidthSpec = when {
|
|
143
|
-
|
|
143
|
+
contentWidth > 0 -> MeasureSpec.makeMeasureSpec(contentWidth, MeasureSpec.EXACTLY)
|
|
144
144
|
fallbackWidthSize > 0 -> MeasureSpec.makeMeasureSpec(fallbackWidthSize, MeasureSpec.AT_MOST)
|
|
145
145
|
else -> MeasureSpec.makeMeasureSpec(1, MeasureSpec.EXACTLY)
|
|
146
146
|
}
|
|
147
147
|
val contentHeightSpec = when {
|
|
148
|
-
|
|
148
|
+
contentHeight > 0 -> MeasureSpec.makeMeasureSpec(contentHeight, MeasureSpec.EXACTLY)
|
|
149
149
|
fallbackHeightSize > 0 -> MeasureSpec.makeMeasureSpec(fallbackHeightSize, MeasureSpec.AT_MOST)
|
|
150
150
|
else -> MeasureSpec.makeMeasureSpec(1, MeasureSpec.EXACTLY)
|
|
151
151
|
}
|
|
@@ -175,13 +175,13 @@ class MarkerView(context: Context, appContext: AppContext) : ExpoView(context, a
|
|
|
175
175
|
measuredContentHeight = max(measuredContentHeight, childBounds?.height() ?: child.measuredHeight)
|
|
176
176
|
}
|
|
177
177
|
|
|
178
|
-
val desiredWidth = if (
|
|
179
|
-
|
|
178
|
+
val desiredWidth = if (contentWidth > 0) {
|
|
179
|
+
contentWidth
|
|
180
180
|
} else {
|
|
181
181
|
measuredContentWidth + paddingLeft + paddingRight
|
|
182
182
|
}
|
|
183
|
-
val desiredHeight = if (
|
|
184
|
-
|
|
183
|
+
val desiredHeight = if (contentHeight > 0) {
|
|
184
|
+
contentHeight
|
|
185
185
|
} else {
|
|
186
186
|
measuredContentHeight + paddingTop + paddingBottom
|
|
187
187
|
}
|
|
@@ -235,8 +235,8 @@ class MarkerView(context: Context, appContext: AppContext) : ExpoView(context, a
|
|
|
235
235
|
private var pendingLongitude: Double? = null // 临时存储经度
|
|
236
236
|
private var iconWidth: Int = 0 // 用于自定义图标的宽度
|
|
237
237
|
private var iconHeight: Int = 0 // 用于自定义图标的高度
|
|
238
|
-
private var
|
|
239
|
-
private var
|
|
238
|
+
private var contentWidth: Int = 0 // 用于自定义视图(children)的宽度
|
|
239
|
+
private var contentHeight: Int = 0 // 用于自定义视图(children)的高度
|
|
240
240
|
private val mainHandler = Handler(Looper.getMainLooper())
|
|
241
241
|
private var isRemoving = false // 标记是否正在被移除
|
|
242
242
|
private var pendingMarkerIconUpdate: Runnable? = null
|
|
@@ -733,21 +733,33 @@ class MarkerView(context: Context, appContext: AppContext) : ExpoView(context, a
|
|
|
733
733
|
}
|
|
734
734
|
|
|
735
735
|
/**
|
|
736
|
-
*
|
|
736
|
+
* 设置内容宽度(用于 children 属性)
|
|
737
737
|
* 注意:React Native 传入的是 DP 值,需要转换为 PX
|
|
738
738
|
*/
|
|
739
|
-
fun
|
|
739
|
+
fun setContentWidth(width: Int) {
|
|
740
740
|
val density = context.resources.displayMetrics.density
|
|
741
|
-
|
|
741
|
+
val resolvedWidth = (width * density).toInt()
|
|
742
|
+
if (contentWidth == resolvedWidth) {
|
|
743
|
+
return
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
contentWidth = resolvedWidth
|
|
747
|
+
scheduleMarkerIconUpdate()
|
|
742
748
|
}
|
|
743
749
|
|
|
744
750
|
/**
|
|
745
|
-
*
|
|
751
|
+
* 设置内容高度(用于 children 属性)
|
|
746
752
|
* 注意:React Native 传入的是 DP 值,需要转换为 PX
|
|
747
753
|
*/
|
|
748
|
-
fun
|
|
754
|
+
fun setContentHeight(height: Int) {
|
|
749
755
|
val density = context.resources.displayMetrics.density
|
|
750
|
-
|
|
756
|
+
val resolvedHeight = (height * density).toInt()
|
|
757
|
+
if (contentHeight == resolvedHeight) {
|
|
758
|
+
return
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
contentHeight = resolvedHeight
|
|
762
|
+
scheduleMarkerIconUpdate()
|
|
751
763
|
}
|
|
752
764
|
|
|
753
765
|
/**
|
|
@@ -897,8 +909,8 @@ class MarkerView(context: Context, appContext: AppContext) : ExpoView(context, a
|
|
|
897
909
|
val measuredWidth = contentBounds?.width() ?: contentView?.measuredWidth ?: measuredChild?.measuredWidth ?: 0
|
|
898
910
|
val measuredHeight = contentBounds?.height() ?: contentView?.measuredHeight ?: measuredChild?.measuredHeight ?: 0
|
|
899
911
|
|
|
900
|
-
val finalWidth = if (measuredWidth > 0) measuredWidth else (if (
|
|
901
|
-
val finalHeight = if (measuredHeight > 0) measuredHeight else (if (
|
|
912
|
+
val finalWidth = if (measuredWidth > 0) measuredWidth else (if (contentWidth > 0) contentWidth else 0)
|
|
913
|
+
val finalHeight = if (measuredHeight > 0) measuredHeight else (if (contentHeight > 0) contentHeight else 0)
|
|
902
914
|
|
|
903
915
|
// 🔑 修复:如果尺寸为 0,说明 View 还没准备好,不要生成 Bitmap,否则会导致动画位置偏移
|
|
904
916
|
if (finalWidth <= 0 || finalHeight <= 0) {
|
|
@@ -978,7 +990,7 @@ class MarkerView(context: Context, appContext: AppContext) : ExpoView(context, a
|
|
|
978
990
|
childView.isDrawingCacheEnabled = false
|
|
979
991
|
childView.destroyDrawingCache()
|
|
980
992
|
|
|
981
|
-
val shouldTrimTransparentPadding =
|
|
993
|
+
val shouldTrimTransparentPadding = contentWidth <= 0 && contentHeight <= 0
|
|
982
994
|
return if (shouldTrimTransparentPadding) trimTransparentPadding(bitmap) else bitmap
|
|
983
995
|
} catch (_: Exception) {
|
|
984
996
|
// 遇到异常时返回 null,让上层使用默认图标
|
|
@@ -1079,8 +1091,8 @@ class MarkerView(context: Context, appContext: AppContext) : ExpoView(context, a
|
|
|
1079
1091
|
val child = getChildAt(0)
|
|
1080
1092
|
val contentView = resolveRenderableContentView(child)
|
|
1081
1093
|
val contentBounds = computeContentBounds(child)
|
|
1082
|
-
val measuredWidth = contentBounds?.width() ?: contentView?.measuredWidth ?: child?.measuredWidth ?:
|
|
1083
|
-
val measuredHeight = contentBounds?.height() ?: contentView?.measuredHeight ?: child?.measuredHeight ?:
|
|
1094
|
+
val measuredWidth = contentBounds?.width() ?: contentView?.measuredWidth ?: child?.measuredWidth ?: contentWidth
|
|
1095
|
+
val measuredHeight = contentBounds?.height() ?: contentView?.measuredHeight ?: child?.measuredHeight ?: contentHeight
|
|
1084
1096
|
val fullCacheKey = "$keyPart|${measuredWidth}x${measuredHeight}"
|
|
1085
1097
|
|
|
1086
1098
|
// 确定锚点:优先使用用户指定的 pendingAnchor,否则对于自定义 View 使用中心点 (0.5, 0.5)
|
|
@@ -1236,13 +1248,13 @@ class MarkerView(context: Context, appContext: AppContext) : ExpoView(context, a
|
|
|
1236
1248
|
val childCountBefore = childCount
|
|
1237
1249
|
|
|
1238
1250
|
val sourceWidth = when {
|
|
1239
|
-
|
|
1251
|
+
contentWidth > 0 -> contentWidth
|
|
1240
1252
|
params?.width != null && params.width > 0 -> params.width
|
|
1241
1253
|
else -> LayoutParams.WRAP_CONTENT
|
|
1242
1254
|
}
|
|
1243
1255
|
|
|
1244
1256
|
val sourceHeight = when {
|
|
1245
|
-
|
|
1257
|
+
contentHeight > 0 -> contentHeight
|
|
1246
1258
|
params?.height != null && params.height > 0 -> params.height
|
|
1247
1259
|
else -> LayoutParams.WRAP_CONTENT
|
|
1248
1260
|
}
|
|
@@ -69,13 +69,13 @@ class MarkerViewModule : Module() {
|
|
|
69
69
|
Prop<Int>("iconHeight") { view, height ->
|
|
70
70
|
view.setIconHeight(height)
|
|
71
71
|
}
|
|
72
|
-
//
|
|
73
|
-
Prop<Int>("
|
|
74
|
-
view.
|
|
72
|
+
// 内容宽度
|
|
73
|
+
Prop<Int>("contentWidth") { view, width ->
|
|
74
|
+
view.setContentWidth(width)
|
|
75
75
|
}
|
|
76
|
-
//
|
|
77
|
-
Prop<Int>("
|
|
78
|
-
view.
|
|
76
|
+
// 内容高度
|
|
77
|
+
Prop<Int>("contentHeight") { view, height ->
|
|
78
|
+
view.setContentHeight(height)
|
|
79
79
|
}
|
|
80
80
|
// 缓存key
|
|
81
81
|
Prop<String?>("cacheKey") { view, key ->
|