expo-gaode-map 1.1.8 → 2.0.0-alpha.2

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 (116) hide show
  1. package/README.en.md +32 -46
  2. package/README.md +51 -70
  3. package/android/src/main/java/expo/modules/gaodemap/ExpoGaodeMapView.kt +98 -268
  4. package/android/src/main/java/expo/modules/gaodemap/ExpoGaodeMapViewModule.kt +1 -49
  5. package/android/src/main/java/expo/modules/gaodemap/managers/CameraManager.kt +30 -7
  6. package/android/src/main/java/expo/modules/gaodemap/managers/UIManager.kt +1 -0
  7. package/android/src/main/java/expo/modules/gaodemap/modules/LocationManager.kt +10 -1
  8. package/android/src/main/java/expo/modules/gaodemap/overlays/CircleView.kt +38 -14
  9. package/android/src/main/java/expo/modules/gaodemap/overlays/CircleViewModule.kt +3 -3
  10. package/android/src/main/java/expo/modules/gaodemap/overlays/ClusterView.kt +8 -1
  11. package/android/src/main/java/expo/modules/gaodemap/overlays/HeatMapView.kt +4 -1
  12. package/android/src/main/java/expo/modules/gaodemap/overlays/MarkerView.kt +322 -93
  13. package/android/src/main/java/expo/modules/gaodemap/overlays/MarkerViewModule.kt +11 -3
  14. package/android/src/main/java/expo/modules/gaodemap/overlays/MultiPointView.kt +4 -1
  15. package/android/src/main/java/expo/modules/gaodemap/overlays/PolygonView.kt +25 -11
  16. package/android/src/main/java/expo/modules/gaodemap/overlays/PolygonViewModule.kt +3 -3
  17. package/android/src/main/java/expo/modules/gaodemap/overlays/PolylineView.kt +20 -10
  18. package/android/src/main/java/expo/modules/gaodemap/overlays/PolylineViewModule.kt +6 -2
  19. package/build/ExpoGaodeMap.types.d.ts +27 -6
  20. package/build/ExpoGaodeMap.types.d.ts.map +1 -1
  21. package/build/ExpoGaodeMap.types.js +3 -0
  22. package/build/ExpoGaodeMap.types.js.map +1 -1
  23. package/build/ExpoGaodeMapModule.d.ts +157 -10
  24. package/build/ExpoGaodeMapModule.d.ts.map +1 -1
  25. package/build/ExpoGaodeMapModule.js +4 -0
  26. package/build/ExpoGaodeMapModule.js.map +1 -1
  27. package/build/ExpoGaodeMapView.d.ts +1 -17
  28. package/build/ExpoGaodeMapView.d.ts.map +1 -1
  29. package/build/ExpoGaodeMapView.js +4 -221
  30. package/build/ExpoGaodeMapView.js.map +1 -1
  31. package/build/components/overlays/Circle.d.ts +11 -1
  32. package/build/components/overlays/Circle.d.ts.map +1 -1
  33. package/build/components/overlays/Circle.js +12 -58
  34. package/build/components/overlays/Circle.js.map +1 -1
  35. package/build/components/overlays/Cluster.d.ts.map +1 -1
  36. package/build/components/overlays/Cluster.js.map +1 -1
  37. package/build/components/overlays/Marker.d.ts +13 -1
  38. package/build/components/overlays/Marker.d.ts.map +1 -1
  39. package/build/components/overlays/Marker.js +51 -115
  40. package/build/components/overlays/Marker.js.map +1 -1
  41. package/build/components/overlays/Polygon.d.ts +7 -15
  42. package/build/components/overlays/Polygon.d.ts.map +1 -1
  43. package/build/components/overlays/Polygon.js +10 -80
  44. package/build/components/overlays/Polygon.js.map +1 -1
  45. package/build/components/overlays/Polyline.d.ts +7 -14
  46. package/build/components/overlays/Polyline.d.ts.map +1 -1
  47. package/build/components/overlays/Polyline.js +9 -66
  48. package/build/components/overlays/Polyline.js.map +1 -1
  49. package/build/index.d.ts +1 -4
  50. package/build/index.d.ts.map +1 -1
  51. package/build/index.js +2 -10
  52. package/build/index.js.map +1 -1
  53. package/build/types/map-view.types.d.ts +0 -90
  54. package/build/types/map-view.types.d.ts.map +1 -1
  55. package/build/types/map-view.types.js.map +1 -1
  56. package/build/types/overlays.types.d.ts +9 -9
  57. package/build/types/overlays.types.d.ts.map +1 -1
  58. package/build/types/overlays.types.js.map +1 -1
  59. package/docs/API.en.md +1 -21
  60. package/docs/API.md +84 -56
  61. package/docs/EXAMPLES.en.md +0 -48
  62. package/docs/EXAMPLES.md +49 -102
  63. package/docs/INITIALIZATION.md +59 -71
  64. package/docs/MIGRATION.md +423 -0
  65. package/ios/ExpoGaodeMapModule.swift +4 -0
  66. package/ios/ExpoGaodeMapView.swift +365 -258
  67. package/ios/ExpoGaodeMapViewModule.swift +3 -50
  68. package/ios/managers/CameraManager.swift +23 -2
  69. package/ios/managers/UIManager.swift +10 -5
  70. package/ios/modules/LocationManager.swift +10 -0
  71. package/ios/overlays/CircleView.swift +98 -19
  72. package/ios/overlays/CircleViewModule.swift +21 -0
  73. package/ios/overlays/ClusterView.swift +33 -4
  74. package/ios/overlays/HeatMapView.swift +16 -4
  75. package/ios/overlays/MarkerView.swift +235 -146
  76. package/ios/overlays/MarkerViewModule.swift +7 -3
  77. package/ios/overlays/MultiPointView.swift +30 -1
  78. package/ios/overlays/PolygonView.swift +63 -12
  79. package/ios/overlays/PolygonViewModule.swift +17 -0
  80. package/ios/overlays/PolylineView.swift +95 -25
  81. package/ios/overlays/PolylineViewModule.swift +17 -8
  82. package/ios/utils/PermissionManager.swift +9 -14
  83. package/package.json +4 -3
  84. package/src/ExpoGaodeMap.types.ts +28 -3
  85. package/src/ExpoGaodeMapModule.ts +201 -12
  86. package/src/ExpoGaodeMapView.tsx +9 -234
  87. package/src/components/overlays/Circle.tsx +14 -70
  88. package/src/components/overlays/Cluster.tsx +0 -1
  89. package/src/components/overlays/Marker.tsx +63 -138
  90. package/src/components/overlays/Polygon.tsx +12 -92
  91. package/src/components/overlays/Polyline.tsx +11 -77
  92. package/src/index.ts +4 -29
  93. package/src/types/map-view.types.ts +1 -85
  94. package/src/types/overlays.types.ts +9 -9
  95. package/android/src/main/java/expo/modules/gaodemap/managers/OverlayManager.kt +0 -574
  96. package/build/modules/AMapLocation.d.ts +0 -78
  97. package/build/modules/AMapLocation.d.ts.map +0 -1
  98. package/build/modules/AMapLocation.js +0 -132
  99. package/build/modules/AMapLocation.js.map +0 -1
  100. package/build/modules/AMapPermissions.d.ts +0 -29
  101. package/build/modules/AMapPermissions.d.ts.map +0 -1
  102. package/build/modules/AMapPermissions.js +0 -23
  103. package/build/modules/AMapPermissions.js.map +0 -1
  104. package/build/modules/AMapSDK.d.ts +0 -22
  105. package/build/modules/AMapSDK.d.ts.map +0 -1
  106. package/build/modules/AMapSDK.js +0 -25
  107. package/build/modules/AMapSDK.js.map +0 -1
  108. package/build/modules/AMapView.d.ts +0 -44
  109. package/build/modules/AMapView.d.ts.map +0 -1
  110. package/build/modules/AMapView.js +0 -65
  111. package/build/modules/AMapView.js.map +0 -1
  112. package/ios/managers/OverlayManager.swift +0 -522
  113. package/src/modules/AMapLocation.ts +0 -165
  114. package/src/modules/AMapPermissions.ts +0 -41
  115. package/src/modules/AMapSDK.ts +0 -31
  116. package/src/modules/AMapView.ts +0 -72
@@ -1,126 +1,62 @@
1
1
  import * as React from 'react';
2
- import { Image } from 'react-native';
3
2
  import { requireNativeViewManager } from 'expo-modules-core';
4
- import { MapContext, MarkerEventContext } from '../../ExpoGaodeMapView';
5
3
  const NativeMarkerView = requireNativeViewManager('MarkerView');
6
- export default function Marker(props) {
7
- // 如果有 children,使用声明式 API
8
- if (props.children) {
9
- return <MarkerDeclarative {...props}/>;
10
- }
11
- // 否则使用命令式 API
12
- return <MarkerImperative {...props}/>;
13
- }
14
- function MarkerDeclarative(props) {
15
- const eventManager = React.useContext(MarkerEventContext);
16
- const markerIdRef = React.useRef(`marker_${Date.now()}_${Math.random()}`);
4
+ /**
5
+ * Marker 组件 - 完全声明式 API
6
+ *
7
+ * 支持:
8
+ * - 自定义图标(icon)
9
+ * - 自定义内容(children)
10
+ * - 大头针样式(pinColor)
11
+ * - 拖拽功能
12
+ * - 所有事件回调
13
+ */
14
+ function Marker(props) {
17
15
  // 根据是否有 children 来决定使用哪个尺寸属性
18
- // 有 children:使用 customViewWidth/customViewHeight(默认 80x30
19
- // 无 children:使用 iconWidth/iconHeight(用于自定义图标)
16
+ // 有 children:使用 customViewWidth/customViewHeight(默认 200x40
17
+ // 无 children:使用 iconWidth/iconHeight(用于自定义图标,默认 40x40)
20
18
  const containerWidth = props.children
21
- ? (props.customViewWidth && props.customViewWidth > 0 ? props.customViewWidth : 80)
22
- : (props.iconWidth || 0);
19
+ ? (props.customViewWidth && props.customViewWidth > 0 ? props.customViewWidth : 200)
20
+ : (props.iconWidth && props.iconWidth > 0 ? props.iconWidth : 40);
23
21
  const containerHeight = props.children
24
- ? (props.customViewHeight && props.customViewHeight > 0 ? props.customViewHeight : 30)
25
- : (props.iconHeight || 0);
26
- React.useEffect(() => {
27
- if (eventManager) {
28
- eventManager.register(markerIdRef.current, {
29
- onPress: props.onPress,
30
- onDragStart: props.onDragStart,
31
- onDrag: props.onDrag,
32
- onDragEnd: props.onDragEnd,
33
- });
34
- }
35
- return () => {
36
- if (eventManager) {
37
- eventManager.unregister(markerIdRef.current);
38
- }
39
- };
40
- }, [eventManager, props.onPress, props.onDragStart, props.onDrag, props.onDragEnd]);
41
- return (<NativeMarkerView latitude={props.position.latitude} longitude={props.position.longitude} title={props.title} snippet={props.snippet} draggable={props.draggable} icon={props.icon} iconWidth={props.iconWidth || 0} // 传递原始的 iconWidth(用于自定义图标)
42
- iconHeight={props.iconHeight || 0} // 传递原始的 iconHeight(用于自定义图标)
43
- customViewWidth={containerWidth} // 新增:自定义视图宽度
44
- customViewHeight={containerHeight} // 新增:自定义视图高度
45
- pinColor={props.pinColor} animatesDrop={props.animatesDrop} centerOffset={props.centerOffset} opacity={props.opacity} flat={props.flat} zIndex={props.zIndex} anchor={props.anchor} style={{ width: containerWidth, height: containerHeight }}>
22
+ ? (props.customViewHeight && props.customViewHeight > 0 ? props.customViewHeight : 40)
23
+ : (props.iconHeight && props.iconHeight > 0 ? props.iconHeight : 40);
24
+ // props 中排除 position 属性,避免传递到原生层
25
+ const { position, ...restProps } = props;
26
+ return (<NativeMarkerView latitude={position.latitude} longitude={position.longitude} iconWidth={containerWidth} iconHeight={containerHeight} customViewWidth={containerWidth} customViewHeight={containerHeight} {...restProps}>
46
27
  {props.children}
47
28
  </NativeMarkerView>);
48
29
  }
49
- function MarkerImperative(props) {
50
- const mapRef = React.useContext(MapContext);
51
- const eventManager = React.useContext(MarkerEventContext);
52
- const markerIdRef = React.useRef(null);
53
- const propsRef = React.useRef(props);
54
- React.useEffect(() => {
55
- propsRef.current = props;
56
- }, [props]);
57
- React.useEffect(() => {
58
- const checkAndAdd = () => {
59
- if (!mapRef?.current) {
60
- setTimeout(checkAndAdd, 50);
61
- return;
62
- }
63
- const markerId = `marker_${Date.now()}_${Math.random()}`;
64
- markerIdRef.current = markerId;
65
- if (eventManager) {
66
- eventManager.register(markerId, {
67
- onPress: props.onPress,
68
- onDragStart: props.onDragStart,
69
- onDrag: props.onDrag,
70
- onDragEnd: props.onDragEnd,
71
- });
72
- }
73
- const processedProps = { ...propsRef.current };
74
- if (processedProps.icon && typeof processedProps.icon === 'number') {
75
- const resolved = Image.resolveAssetSource(processedProps.icon);
76
- processedProps.icon = resolved;
77
- }
78
- mapRef.current.addMarker(markerId, processedProps);
79
- };
80
- checkAndAdd();
81
- return () => {
82
- if (markerIdRef.current) {
83
- if (eventManager) {
84
- eventManager.unregister(markerIdRef.current);
85
- }
86
- if (mapRef?.current) {
87
- mapRef.current.removeMarker(markerIdRef.current);
88
- }
89
- }
90
- };
91
- }, []);
92
- React.useEffect(() => {
93
- if (markerIdRef.current && eventManager) {
94
- eventManager.register(markerIdRef.current, {
95
- onPress: props.onPress,
96
- onDragStart: props.onDragStart,
97
- onDrag: props.onDrag,
98
- onDragEnd: props.onDragEnd,
99
- });
100
- }
101
- }, [eventManager, props.onPress, props.onDragStart, props.onDrag, props.onDragEnd]);
102
- React.useEffect(() => {
103
- if (markerIdRef.current && mapRef?.current) {
104
- const processedProps = { ...props };
105
- if (processedProps.icon && typeof processedProps.icon === 'number') {
106
- const resolved = Image.resolveAssetSource(processedProps.icon);
107
- processedProps.icon = resolved;
108
- }
109
- mapRef.current.updateMarker(markerIdRef.current, processedProps);
110
- }
111
- }, [
112
- mapRef,
113
- props.position?.latitude,
114
- props.position?.longitude,
115
- props.title,
116
- props.draggable,
117
- props.icon,
118
- props.iconWidth,
119
- props.iconHeight,
120
- props.customViewWidth,
121
- props.customViewHeight,
122
- props.pinColor
123
- ]);
124
- return null;
30
+ /**
31
+ * 自定义比较函数
32
+ * 深度比较 position 和其他关键属性
33
+ */
34
+ function arePropsEqual(prevProps, nextProps) {
35
+ // 比较 position
36
+ if (prevProps.position.latitude !== nextProps.position.latitude ||
37
+ prevProps.position.longitude !== nextProps.position.longitude) {
38
+ return false;
39
+ }
40
+ // 比较基础属性
41
+ if (prevProps.title !== nextProps.title ||
42
+ prevProps.snippet !== nextProps.snippet ||
43
+ prevProps.icon !== nextProps.icon ||
44
+ prevProps.pinColor !== nextProps.pinColor ||
45
+ prevProps.draggable !== nextProps.draggable ||
46
+ prevProps.animatesDrop !== nextProps.animatesDrop ||
47
+ prevProps.iconWidth !== nextProps.iconWidth ||
48
+ prevProps.iconHeight !== nextProps.iconHeight ||
49
+ prevProps.customViewWidth !== nextProps.customViewWidth ||
50
+ prevProps.customViewHeight !== nextProps.customViewHeight) {
51
+ return false;
52
+ }
53
+ // 比较 children(简单比较,可根据需要深度比较)
54
+ if (prevProps.children !== nextProps.children) {
55
+ return false;
56
+ }
57
+ // 其他属性相同,不需要重新渲染
58
+ return true;
125
59
  }
60
+ // 导出优化后的组件
61
+ export default React.memo(Marker, arePropsEqual);
126
62
  //# sourceMappingURL=Marker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Marker.js","sourceRoot":"","sources":["../../../src/components/overlays/Marker.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { Image } from 'react-native';\nimport { requireNativeViewManager } from 'expo-modules-core';\nimport { MapContext, MarkerEventContext } from '../../ExpoGaodeMapView';\nimport type { MarkerProps } from '../../types';\n\nconst NativeMarkerView = requireNativeViewManager('MarkerView');\n\nexport default function Marker(props: MarkerProps) {\n // 如果有 children,使用声明式 API\n if (props.children) {\n return <MarkerDeclarative {...props} />;\n }\n // 否则使用命令式 API\n return <MarkerImperative {...props} />;\n}\n\nfunction MarkerDeclarative(props: MarkerProps) {\n const eventManager = React.useContext(MarkerEventContext);\n const markerIdRef = React.useRef(`marker_${Date.now()}_${Math.random()}`);\n \n // 根据是否有 children 来决定使用哪个尺寸属性\n // 有 children:使用 customViewWidth/customViewHeight(默认 80x30)\n // 无 children:使用 iconWidth/iconHeight(用于自定义图标)\n const containerWidth = props.children\n ? (props.customViewWidth && props.customViewWidth > 0 ? props.customViewWidth : 80)\n : (props.iconWidth || 0);\n const containerHeight = props.children\n ? (props.customViewHeight && props.customViewHeight > 0 ? props.customViewHeight : 30)\n : (props.iconHeight || 0);\n \n React.useEffect(() => {\n if (eventManager) {\n eventManager.register(markerIdRef.current, {\n onPress: props.onPress,\n onDragStart: props.onDragStart,\n onDrag: props.onDrag,\n onDragEnd: props.onDragEnd,\n });\n }\n return () => {\n if (eventManager) {\n eventManager.unregister(markerIdRef.current);\n }\n };\n }, [eventManager, props.onPress, props.onDragStart, props.onDrag, props.onDragEnd]);\n \n return (\n <NativeMarkerView\n latitude={props.position.latitude}\n longitude={props.position.longitude}\n title={props.title}\n snippet={props.snippet}\n draggable={props.draggable}\n icon={props.icon}\n iconWidth={props.iconWidth || 0} // 传递原始的 iconWidth(用于自定义图标)\n iconHeight={props.iconHeight || 0} // 传递原始的 iconHeight(用于自定义图标)\n customViewWidth={containerWidth} // 新增:自定义视图宽度\n customViewHeight={containerHeight} // 新增:自定义视图高度\n pinColor={props.pinColor}\n animatesDrop={props.animatesDrop}\n centerOffset={props.centerOffset}\n opacity={props.opacity}\n flat={props.flat}\n zIndex={props.zIndex}\n anchor={props.anchor}\n style={{ width: containerWidth, height: containerHeight }}\n >\n {props.children}\n </NativeMarkerView>\n );\n}\n\nfunction MarkerImperative(props: MarkerProps) {\n const mapRef = React.useContext(MapContext);\n const eventManager = React.useContext(MarkerEventContext);\n const markerIdRef = React.useRef<string | null>(null);\n const propsRef = React.useRef(props);\n \n React.useEffect(() => {\n propsRef.current = props;\n }, [props]);\n \n React.useEffect(() => {\n const checkAndAdd = () => {\n if (!mapRef?.current) {\n setTimeout(checkAndAdd, 50);\n return;\n }\n \n const markerId = `marker_${Date.now()}_${Math.random()}`;\n markerIdRef.current = markerId;\n \n if (eventManager) {\n eventManager.register(markerId, {\n onPress: props.onPress,\n onDragStart: props.onDragStart,\n onDrag: props.onDrag,\n onDragEnd: props.onDragEnd,\n });\n }\n \n const processedProps = { ...propsRef.current };\n if (processedProps.icon && typeof processedProps.icon === 'number') {\n const resolved = Image.resolveAssetSource(processedProps.icon);\n processedProps.icon = resolved;\n }\n \n mapRef.current.addMarker(markerId, processedProps);\n };\n \n checkAndAdd();\n \n return () => {\n if (markerIdRef.current) {\n if (eventManager) {\n eventManager.unregister(markerIdRef.current);\n }\n if (mapRef?.current) {\n mapRef.current.removeMarker(markerIdRef.current);\n }\n }\n };\n }, []);\n\n React.useEffect(() => {\n if (markerIdRef.current && eventManager) {\n eventManager.register(markerIdRef.current, {\n onPress: props.onPress,\n onDragStart: props.onDragStart,\n onDrag: props.onDrag,\n onDragEnd: props.onDragEnd,\n });\n }\n }, [eventManager, props.onPress, props.onDragStart, props.onDrag, props.onDragEnd]);\n\n React.useEffect(() => {\n if (markerIdRef.current && mapRef?.current) {\n const processedProps = { ...props };\n if (processedProps.icon && typeof processedProps.icon === 'number') {\n const resolved = Image.resolveAssetSource(processedProps.icon);\n processedProps.icon = resolved;\n }\n mapRef.current.updateMarker(markerIdRef.current, processedProps);\n }\n }, [\n mapRef,\n props.position?.latitude,\n props.position?.longitude,\n props.title,\n props.draggable,\n props.icon,\n props.iconWidth,\n props.iconHeight,\n props.customViewWidth,\n props.customViewHeight,\n props.pinColor\n ]);\n \n return null;\n}\n\n"]}
1
+ {"version":3,"file":"Marker.js","sourceRoot":"","sources":["../../../src/components/overlays/Marker.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport * as React from 'react';\nimport { requireNativeViewManager } from 'expo-modules-core';\nimport type { MarkerProps } from '../../types';\n\nconst NativeMarkerView = requireNativeViewManager('MarkerView');\n\n/**\n * Marker 组件 - 完全声明式 API\n *\n * 支持:\n * - 自定义图标(icon)\n * - 自定义内容(children)\n * - 大头针样式(pinColor)\n * - 拖拽功能\n * - 所有事件回调\n */\nfunction Marker(props: MarkerProps) {\n // 根据是否有 children 来决定使用哪个尺寸属性\n // 有 children:使用 customViewWidth/customViewHeight(默认 200x40)\n // 无 children:使用 iconWidth/iconHeight(用于自定义图标,默认 40x40)\n const containerWidth = props.children\n ? (props.customViewWidth && props.customViewWidth > 0 ? props.customViewWidth : 200)\n : (props.iconWidth && props.iconWidth > 0 ? props.iconWidth : 40);\n const containerHeight = props.children\n ? (props.customViewHeight && props.customViewHeight > 0 ? props.customViewHeight : 40)\n : (props.iconHeight && props.iconHeight > 0 ? props.iconHeight : 40);\n \n // 从 props 中排除 position 属性,避免传递到原生层\n const { position, ...restProps } = props;\n \n return (\n <NativeMarkerView\n latitude={position.latitude}\n longitude={position.longitude}\n iconWidth={containerWidth}\n iconHeight={containerHeight}\n customViewWidth={containerWidth}\n customViewHeight={containerHeight}\n {...restProps}\n >\n {props.children}\n </NativeMarkerView>\n );\n}\n\n/**\n * 自定义比较函数\n * 深度比较 position 和其他关键属性\n */\nfunction arePropsEqual(prevProps: MarkerProps, nextProps: MarkerProps): boolean {\n // 比较 position\n if (\n prevProps.position.latitude !== nextProps.position.latitude ||\n prevProps.position.longitude !== nextProps.position.longitude\n ) {\n return false;\n }\n \n // 比较基础属性\n if (\n prevProps.title !== nextProps.title ||\n prevProps.snippet !== nextProps.snippet ||\n prevProps.icon !== nextProps.icon ||\n prevProps.pinColor !== nextProps.pinColor ||\n prevProps.draggable !== nextProps.draggable ||\n prevProps.animatesDrop !== nextProps.animatesDrop ||\n prevProps.iconWidth !== nextProps.iconWidth ||\n prevProps.iconHeight !== nextProps.iconHeight ||\n prevProps.customViewWidth !== nextProps.customViewWidth ||\n prevProps.customViewHeight !== nextProps.customViewHeight\n ) {\n return false;\n }\n \n // 比较 children(简单比较,可根据需要深度比较)\n if (prevProps.children !== nextProps.children) {\n return false;\n }\n \n // 其他属性相同,不需要重新渲染\n return true;\n}\n\n// 导出优化后的组件\nexport default React.memo(Marker, arePropsEqual);\n\n"]}
@@ -1,20 +1,12 @@
1
+ import * as React from 'react';
1
2
  import type { PolygonProps } from '../../types';
2
3
  /**
3
- * 高德地图多边形覆盖物组件
4
+ * 渲染一个高德地图多边形覆盖物组件
4
5
  *
5
- * @param props - 多边形配置属性
6
- * @param props.points - 多边形顶点坐标数组,至少需要3个点
7
- * @param props.fillColor - 多边形填充颜色,十六进制格式,默认0x440000FF
8
- * @param props.strokeColor - 多边形边框颜色,默认-16776961
9
- * @param props.strokeWidth - 多边形边框宽度,默认10
10
- * @param props.zIndex - 多边形层级,默认0
11
- * @param props.onPress - 多边形点击事件
12
- *
13
- * @remarks
14
- * 组件内部会自动生成唯一ID用于标识多边形,并在组件挂载时添加到地图,
15
- * 更新时同步修改多边形属性,卸载时自动移除多边形。
16
- *
17
- * 注意:points数组长度必须大于等于3才能有效绘制多边形。
6
+ * @param props - 多边形属性配置,继承自PolygonProps类型
7
+ * @returns 高德地图原生多边形视图组件
18
8
  */
19
- export default function Polygon(props: PolygonProps): null;
9
+ declare function Polygon(props: PolygonProps): React.JSX.Element;
10
+ declare const _default: React.MemoExoticComponent<typeof Polygon>;
11
+ export default _default;
20
12
  //# sourceMappingURL=Polygon.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Polygon.d.ts","sourceRoot":"","sources":["../../../src/components/overlays/Polygon.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,KAAK,EAAE,YAAY,QA2ElD"}
1
+ {"version":3,"file":"Polygon.d.ts","sourceRoot":"","sources":["../../../src/components/overlays/Polygon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAKhD;;;;;GAKG;AACH,iBAAS,OAAO,CAAC,KAAK,EAAE,YAAY,qBAEnC;;AAGD,wBAAmC"}
@@ -1,85 +1,15 @@
1
- import { useContext, useEffect, useRef } from 'react';
2
- import { MapContext, PolygonEventContext } from '../../ExpoGaodeMapView';
1
+ import * as React from 'react';
2
+ import { requireNativeViewManager } from 'expo-modules-core';
3
+ const NativePolygonView = requireNativeViewManager('PolygonView');
3
4
  /**
4
- * 高德地图多边形覆盖物组件
5
+ * 渲染一个高德地图多边形覆盖物组件
5
6
  *
6
- * @param props - 多边形配置属性
7
- * @param props.points - 多边形顶点坐标数组,至少需要3个点
8
- * @param props.fillColor - 多边形填充颜色,十六进制格式,默认0x440000FF
9
- * @param props.strokeColor - 多边形边框颜色,默认-16776961
10
- * @param props.strokeWidth - 多边形边框宽度,默认10
11
- * @param props.zIndex - 多边形层级,默认0
12
- * @param props.onPress - 多边形点击事件
13
- *
14
- * @remarks
15
- * 组件内部会自动生成唯一ID用于标识多边形,并在组件挂载时添加到地图,
16
- * 更新时同步修改多边形属性,卸载时自动移除多边形。
17
- *
18
- * 注意:points数组长度必须大于等于3才能有效绘制多边形。
7
+ * @param props - 多边形属性配置,继承自PolygonProps类型
8
+ * @returns 高德地图原生多边形视图组件
19
9
  */
20
- export default function Polygon(props) {
21
- const { points, fillColor, strokeColor, strokeWidth, zIndex } = props;
22
- const nativeRef = useContext(MapContext);
23
- const eventManager = useContext(PolygonEventContext);
24
- const polygonIdRef = useRef(null);
25
- const propsRef = useRef(props);
26
- useEffect(() => {
27
- propsRef.current = props;
28
- }, [props]);
29
- useEffect(() => {
30
- const checkAndAdd = () => {
31
- if (!nativeRef?.current) {
32
- setTimeout(checkAndAdd, 50);
33
- return;
34
- }
35
- const polygonId = `polygon_${Date.now()}_${Math.random()}`;
36
- polygonIdRef.current = polygonId;
37
- if (eventManager && props.onPress) {
38
- eventManager.register(polygonId, {
39
- onPress: props.onPress,
40
- });
41
- }
42
- const { points, fillColor, strokeColor, strokeWidth, zIndex } = propsRef.current;
43
- if (points && points.length >= 3) {
44
- nativeRef.current.addPolygon(polygonId, {
45
- points,
46
- fillColor: fillColor ?? '#880000FF',
47
- strokeColor: strokeColor ?? '#FFFF0000',
48
- strokeWidth: strokeWidth ?? 10,
49
- zIndex: zIndex ?? 0,
50
- });
51
- }
52
- };
53
- checkAndAdd();
54
- return () => {
55
- if (polygonIdRef.current) {
56
- if (eventManager) {
57
- eventManager.unregister(polygonIdRef.current);
58
- }
59
- if (nativeRef?.current) {
60
- nativeRef.current.removePolygon(polygonIdRef.current);
61
- }
62
- }
63
- };
64
- }, []);
65
- useEffect(() => {
66
- if (polygonIdRef.current && eventManager) {
67
- eventManager.register(polygonIdRef.current, {
68
- onPress: props.onPress,
69
- });
70
- }
71
- }, [props.onPress]);
72
- useEffect(() => {
73
- if (polygonIdRef.current && nativeRef?.current) {
74
- nativeRef.current.updatePolygon(polygonIdRef.current, {
75
- points,
76
- fillColor,
77
- strokeColor,
78
- strokeWidth,
79
- zIndex,
80
- });
81
- }
82
- }, [points, fillColor, strokeColor, strokeWidth, zIndex]);
83
- return null;
10
+ function Polygon(props) {
11
+ return <NativePolygonView {...props}/>;
84
12
  }
13
+ // 导出优化后的组件
14
+ export default React.memo(Polygon);
85
15
  //# sourceMappingURL=Polygon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Polygon.js","sourceRoot":"","sources":["../../../src/components/overlays/Polygon.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useContext, useEffect, useRef } from 'react';\nimport type { PolygonProps } from '../../types';\nimport { MapContext, PolygonEventContext } from '../../ExpoGaodeMapView';\n\n\n/**\n * 高德地图多边形覆盖物组件\n * \n * @param props - 多边形配置属性\n * @param props.points - 多边形顶点坐标数组,至少需要3个点\n * @param props.fillColor - 多边形填充颜色,十六进制格式,默认0x440000FF\n * @param props.strokeColor - 多边形边框颜色,默认-16776961\n * @param props.strokeWidth - 多边形边框宽度,默认10\n * @param props.zIndex - 多边形层级,默认0\n * @param props.onPress - 多边形点击事件\n * \n * @remarks\n * 组件内部会自动生成唯一ID用于标识多边形,并在组件挂载时添加到地图,\n * 更新时同步修改多边形属性,卸载时自动移除多边形。\n * \n * 注意:points数组长度必须大于等于3才能有效绘制多边形。\n */\nexport default function Polygon(props: PolygonProps) {\n const { points, fillColor, strokeColor, strokeWidth, zIndex } = props;\n const nativeRef = useContext(MapContext);\n const eventManager = useContext(PolygonEventContext);\n const polygonIdRef = useRef<string | null>(null);\n const propsRef = useRef(props);\n \n useEffect(() => {\n propsRef.current = props;\n }, [props]);\n\n useEffect(() => {\n const checkAndAdd = () => {\n if (!nativeRef?.current) {\n setTimeout(checkAndAdd, 50);\n return;\n }\n \n const polygonId = `polygon_${Date.now()}_${Math.random()}`;\n polygonIdRef.current = polygonId;\n \n if (eventManager && props.onPress) {\n eventManager.register(polygonId, {\n onPress: props.onPress,\n });\n }\n \n const { points, fillColor, strokeColor, strokeWidth, zIndex } = propsRef.current;\n \n if (points && points.length >= 3) {\n nativeRef.current.addPolygon(polygonId, {\n points,\n fillColor: fillColor ?? '#880000FF',\n strokeColor: strokeColor ?? '#FFFF0000',\n strokeWidth: strokeWidth ?? 10,\n zIndex: zIndex ?? 0,\n });\n }\n };\n \n checkAndAdd();\n \n return () => {\n if (polygonIdRef.current) {\n if (eventManager) {\n eventManager.unregister(polygonIdRef.current);\n }\n if (nativeRef?.current) {\n nativeRef.current.removePolygon(polygonIdRef.current);\n }\n }\n };\n }, []);\n\n useEffect(() => {\n if (polygonIdRef.current && eventManager) {\n eventManager.register(polygonIdRef.current, {\n onPress: props.onPress,\n });\n }\n }, [props.onPress]);\n\n useEffect(() => {\n if (polygonIdRef.current && nativeRef?.current) {\n nativeRef.current.updatePolygon(polygonIdRef.current, {\n points,\n fillColor,\n strokeColor,\n strokeWidth,\n zIndex,\n });\n }\n }, [points, fillColor, strokeColor, strokeWidth, zIndex]);\n\n return null;\n}\n"]}
1
+ {"version":3,"file":"Polygon.js","sourceRoot":"","sources":["../../../src/components/overlays/Polygon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,MAAM,iBAAiB,GAAG,wBAAwB,CAAe,aAAa,CAAC,CAAC;AAEhF;;;;;GAKG;AACH,SAAS,OAAO,CAAC,KAAmB;IAClC,OAAO,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,EAAG,CAAC;AAC1C,CAAC;AAED,WAAW;AACX,eAAe,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC","sourcesContent":["import * as React from 'react';\nimport type { PolygonProps } from '../../types';\n\nimport { requireNativeViewManager } from 'expo-modules-core';\nconst NativePolygonView = requireNativeViewManager<PolygonProps>('PolygonView');\n\n/**\n * 渲染一个高德地图多边形覆盖物组件\n *\n * @param props - 多边形属性配置,继承自PolygonProps类型\n * @returns 高德地图原生多边形视图组件\n */\nfunction Polygon(props: PolygonProps) {\n return <NativePolygonView {...props} />;\n}\n\n// 导出优化后的组件\nexport default React.memo(Polygon);\n"]}
@@ -1,19 +1,12 @@
1
+ import * as React from 'react';
1
2
  import type { PolylineProps } from '../../types';
2
3
  /**
3
- * Polyline 组件用于在高德地图上绘制折线
4
+ * 渲染高德地图上的折线覆盖物组件
4
5
  *
5
- * @param props - 折线的配置属性
6
- * @param props.points - 折线的坐标点数组
7
- * @param props.width - 折线的宽度(像素)
8
- * @param props.color - 折线的颜色(十六进制或RGBA)
9
- * @param props.onPress - 折线点击事件回调函数
10
- * @param [props.texture] - 可选,折线的纹理样式
11
- *
12
- * @remarks
13
- * 组件内部使用 React 的 useEffect 钩子来管理折线的生命周期:
14
- * 1. 组件挂载时创建折线并添加到地图
15
- * 2. 组件卸载时自动从地图移除折线
16
- * 3. 使用 ref 保存折线ID以便清理
6
+ * @param props - 折线属性配置,继承自PolylineProps类型
7
+ * @returns 高德地图原生折线视图组件
17
8
  */
18
- export default function Polyline(props: PolylineProps): null;
9
+ declare function Polyline(props: PolylineProps): React.JSX.Element;
10
+ declare const _default: React.MemoExoticComponent<typeof Polyline>;
11
+ export default _default;
19
12
  //# sourceMappingURL=Polyline.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Polyline.d.ts","sourceRoot":"","sources":["../../../src/components/overlays/Polyline.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,KAAK,EAAE,aAAa,QA8DpD"}
1
+ {"version":3,"file":"Polyline.d.ts","sourceRoot":"","sources":["../../../src/components/overlays/Polyline.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAKjD;;;;;GAKG;AACH,iBAAS,QAAQ,CAAC,KAAK,EAAE,aAAa,qBAErC;;AAGD,wBAAoC"}
@@ -1,72 +1,15 @@
1
1
  import * as React from 'react';
2
- import { MapContext, PolylineEventContext } from '../../ExpoGaodeMapView';
2
+ import { requireNativeViewManager } from 'expo-modules-core';
3
+ const NativePolylineView = requireNativeViewManager('PolylineView');
3
4
  /**
4
- * Polyline 组件用于在高德地图上绘制折线
5
+ * 渲染高德地图上的折线覆盖物组件
5
6
  *
6
- * @param props - 折线的配置属性
7
- * @param props.points - 折线的坐标点数组
8
- * @param props.width - 折线的宽度(像素)
9
- * @param props.color - 折线的颜色(十六进制或RGBA)
10
- * @param props.onPress - 折线点击事件回调函数
11
- * @param [props.texture] - 可选,折线的纹理样式
12
- *
13
- * @remarks
14
- * 组件内部使用 React 的 useEffect 钩子来管理折线的生命周期:
15
- * 1. 组件挂载时创建折线并添加到地图
16
- * 2. 组件卸载时自动从地图移除折线
17
- * 3. 使用 ref 保存折线ID以便清理
7
+ * @param props - 折线属性配置,继承自PolylineProps类型
8
+ * @returns 高德地图原生折线视图组件
18
9
  */
19
- export default function Polyline(props) {
20
- const mapRef = React.useContext(MapContext);
21
- const eventManager = React.useContext(PolylineEventContext);
22
- const polylineIdRef = React.useRef(null);
23
- const propsRef = React.useRef(props);
24
- React.useEffect(() => {
25
- propsRef.current = props;
26
- }, [props]);
27
- React.useEffect(() => {
28
- const checkAndAdd = () => {
29
- if (!mapRef?.current) {
30
- setTimeout(checkAndAdd, 50);
31
- return;
32
- }
33
- const polylineId = `polyline_${Date.now()}_${Math.random()}`;
34
- polylineIdRef.current = polylineId;
35
- if (eventManager && props.onPress) {
36
- eventManager.register(polylineId, {
37
- onPress: props.onPress,
38
- });
39
- }
40
- const polylineProps = {
41
- points: propsRef.current.points,
42
- width: propsRef.current.width,
43
- color: propsRef.current.color,
44
- ...(propsRef.current.texture && { texture: propsRef.current.texture }),
45
- ...(propsRef.current.dotted !== undefined && { dotted: propsRef.current.dotted }),
46
- ...(propsRef.current.geodesic !== undefined && { geodesic: propsRef.current.geodesic }),
47
- ...(propsRef.current.zIndex !== undefined && { zIndex: propsRef.current.zIndex }),
48
- };
49
- mapRef.current.addPolyline(polylineId, polylineProps);
50
- };
51
- checkAndAdd();
52
- return () => {
53
- if (polylineIdRef.current) {
54
- if (eventManager) {
55
- eventManager.unregister(polylineIdRef.current);
56
- }
57
- if (mapRef?.current) {
58
- mapRef.current.removePolyline(polylineIdRef.current);
59
- }
60
- }
61
- };
62
- }, []);
63
- React.useEffect(() => {
64
- if (polylineIdRef.current && eventManager) {
65
- eventManager.register(polylineIdRef.current, {
66
- onPress: props.onPress,
67
- });
68
- }
69
- }, [props.onPress]);
70
- return null;
10
+ function Polyline(props) {
11
+ return <NativePolylineView {...props}/>;
71
12
  }
13
+ // 导出优化后的组件
14
+ export default React.memo(Polyline);
72
15
  //# sourceMappingURL=Polyline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Polyline.js","sourceRoot":"","sources":["../../../src/components/overlays/Polyline.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport * as React from 'react';\nimport { MapContext, PolylineEventContext } from '../../ExpoGaodeMapView';\nimport type { PolylineProps } from '../../types';\n\n\n/**\n * Polyline 组件用于在高德地图上绘制折线\n * \n * @param props - 折线的配置属性\n * @param props.points - 折线的坐标点数组\n * @param props.width - 折线的宽度(像素)\n * @param props.color - 折线的颜色(十六进制或RGBA)\n * @param props.onPress - 折线点击事件回调函数\n * @param [props.texture] - 可选,折线的纹理样式\n * \n * @remarks\n * 组件内部使用 React 的 useEffect 钩子来管理折线的生命周期:\n * 1. 组件挂载时创建折线并添加到地图\n * 2. 组件卸载时自动从地图移除折线\n * 3. 使用 ref 保存折线ID以便清理\n */\nexport default function Polyline(props: PolylineProps) {\n const mapRef = React.useContext(MapContext);\n const eventManager = React.useContext(PolylineEventContext);\n const polylineIdRef = React.useRef<string | null>(null);\n const propsRef = React.useRef(props);\n \n React.useEffect(() => {\n propsRef.current = props;\n }, [props]);\n \n React.useEffect(() => {\n const checkAndAdd = () => {\n if (!mapRef?.current) {\n setTimeout(checkAndAdd, 50);\n return;\n }\n \n const polylineId = `polyline_${Date.now()}_${Math.random()}`;\n polylineIdRef.current = polylineId;\n \n if (eventManager && props.onPress) {\n eventManager.register(polylineId, {\n onPress: props.onPress,\n });\n }\n \n const polylineProps = {\n points: propsRef.current.points,\n width: propsRef.current.width,\n color: propsRef.current.color,\n ...(propsRef.current.texture && { texture: propsRef.current.texture }),\n ...(propsRef.current.dotted !== undefined && { dotted: propsRef.current.dotted }),\n ...(propsRef.current.geodesic !== undefined && { geodesic: propsRef.current.geodesic }),\n ...(propsRef.current.zIndex !== undefined && { zIndex: propsRef.current.zIndex }),\n };\n \n mapRef.current.addPolyline(polylineId, polylineProps);\n };\n \n checkAndAdd();\n \n return () => {\n if (polylineIdRef.current) {\n if (eventManager) {\n eventManager.unregister(polylineIdRef.current);\n }\n if (mapRef?.current) {\n mapRef.current.removePolyline(polylineIdRef.current);\n }\n }\n };\n }, []);\n\n React.useEffect(() => {\n if (polylineIdRef.current && eventManager) {\n eventManager.register(polylineIdRef.current, {\n onPress: props.onPress,\n });\n }\n }, [props.onPress]);\n\n return null;\n}\n"]}
1
+ {"version":3,"file":"Polyline.js","sourceRoot":"","sources":["../../../src/components/overlays/Polyline.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,MAAM,kBAAkB,GAAG,wBAAwB,CAAgB,cAAc,CAAC,CAAC;AAEnF;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,KAAoB;IACpC,OAAO,CAAC,kBAAkB,CAAC,IAAI,KAAK,CAAC,EAAG,CAAC;AAC3C,CAAC;AAED,WAAW;AACX,eAAe,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC","sourcesContent":["\nimport * as React from 'react';\nimport type { PolylineProps } from '../../types';\n\nimport { requireNativeViewManager } from 'expo-modules-core';\nconst NativePolylineView = requireNativeViewManager<PolylineProps>('PolylineView');\n\n/**\n * 渲染高德地图上的折线覆盖物组件\n *\n * @param props - 折线属性配置,继承自PolylineProps类型\n * @returns 高德地图原生折线视图组件\n */\nfunction Polyline(props: PolylineProps) {\n return <NativePolylineView {...props} />;\n}\n\n// 导出优化后的组件\nexport default React.memo(Polyline);\n"]}
package/build/index.d.ts CHANGED
@@ -1,10 +1,7 @@
1
1
  export * from './ExpoGaodeMap.types';
2
2
  export * from './types';
3
3
  export { default as ExpoGaodeMapModule } from './ExpoGaodeMapModule';
4
- export { default as AMapSDK, initSDK, getVersion } from './modules/AMapSDK';
5
- export { default as AMapLocation, configure, start, stop, isStarted, getCurrentLocation, addLocationListener, coordinateConvert, startUpdatingHeading, stopUpdatingHeading, } from './modules/AMapLocation';
6
- export { default as AMapPermissions, checkLocationPermission, requestLocationPermission, } from './modules/AMapPermissions';
7
- export type { PermissionStatus } from './modules/AMapPermissions';
4
+ export type { SDKConfig, PermissionStatus } from './ExpoGaodeMapModule';
8
5
  export { default as MapView } from './ExpoGaodeMapView';
9
6
  export type { MapViewRef } from './ExpoGaodeMapView';
10
7
  export { Marker, Polyline, Polygon, Circle, HeatMap, MultiPoint, Cluster, } from './components/overlays';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAGrE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG5E,OAAO,EACL,OAAO,IAAI,YAAY,EACvB,SAAS,EACT,KAAK,EACL,IAAI,EACJ,SAAS,EACT,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,OAAO,IAAI,eAAe,EAC1B,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAMlE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EACL,MAAM,EACN,QAAQ,EACR,OAAO,EACP,MAAM,EACN,OAAO,EACP,UAAU,EACV,OAAO,GACR,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAGrE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EACL,MAAM,EACN,QAAQ,EACR,OAAO,EACP,MAAM,EACN,OAAO,EACP,UAAU,EACV,OAAO,GACR,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC"}
package/build/index.js CHANGED
@@ -1,20 +1,12 @@
1
1
  // 导出类型定义
2
2
  export * from './ExpoGaodeMap.types';
3
3
  export * from './types';
4
- // 导出原生模块
4
+ // 导出原生模块 - 直接使用,无需封装
5
5
  export { default as ExpoGaodeMapModule } from './ExpoGaodeMapModule';
6
- // 导出 SDK 模块
7
- export { default as AMapSDK, initSDK, getVersion } from './modules/AMapSDK';
8
- // 导出定位模块
9
- export { default as AMapLocation, configure, start, stop, isStarted, getCurrentLocation, addLocationListener, coordinateConvert, startUpdatingHeading, stopUpdatingHeading, } from './modules/AMapLocation';
10
- // 导出权限管理模块
11
- export { default as AMapPermissions, checkLocationPermission, requestLocationPermission, } from './modules/AMapPermissions';
12
- // 地图视图控制已移至 MapView 的 ref 调用
13
- // 使用方式: const mapRef = useRef<MapViewRef>(null); mapRef.current.moveCamera() 等
14
6
  // 导出地图视图组件
15
7
  export { default as MapView } from './ExpoGaodeMapView';
16
8
  // 导出覆盖物组件
17
9
  export { Marker, Polyline, Polygon, Circle, HeatMap, MultiPoint, Cluster, } from './components/overlays';
18
- // 默认导出:直接重新导出所有模块
10
+ // 默认导出原生模块
19
11
  export { default } from './ExpoGaodeMapModule';
20
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,SAAS;AACT,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC;AAExB,SAAS;AACT,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAErE,YAAY;AACZ,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE5E,SAAS;AACT,OAAO,EACL,OAAO,IAAI,YAAY,EACvB,SAAS,EACT,KAAK,EACL,IAAI,EACJ,SAAS,EACT,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,wBAAwB,CAAC;AAEhC,WAAW;AACX,OAAO,EACL,OAAO,IAAI,eAAe,EAC1B,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AAGnC,6BAA6B;AAC7B,+EAA+E;AAE/E,WAAW;AACX,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAGxD,UAAU;AACV,OAAO,EACL,MAAM,EACN,QAAQ,EACR,OAAO,EACP,MAAM,EACN,OAAO,EACP,UAAU,EACV,OAAO,GACR,MAAM,uBAAuB,CAAC;AAE/B,kBAAkB;AAClB,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC","sourcesContent":["// 导出类型定义\nexport * from './ExpoGaodeMap.types';\nexport * from './types';\n\n// 导出原生模块\nexport { default as ExpoGaodeMapModule } from './ExpoGaodeMapModule';\n\n// 导出 SDK 模块\nexport { default as AMapSDK, initSDK, getVersion } from './modules/AMapSDK';\n\n// 导出定位模块\nexport {\n default as AMapLocation,\n configure,\n start,\n stop,\n isStarted,\n getCurrentLocation,\n addLocationListener,\n coordinateConvert,\n startUpdatingHeading,\n stopUpdatingHeading,\n} from './modules/AMapLocation';\n\n// 导出权限管理模块\nexport {\n default as AMapPermissions,\n checkLocationPermission,\n requestLocationPermission,\n} from './modules/AMapPermissions';\nexport type { PermissionStatus } from './modules/AMapPermissions';\n\n// 地图视图控制已移至 MapView 的 ref 调用\n// 使用方式: const mapRef = useRef<MapViewRef>(null); mapRef.current.moveCamera() 等\n\n// 导出地图视图组件\nexport { default as MapView } from './ExpoGaodeMapView';\nexport type { MapViewRef } from './ExpoGaodeMapView';\n\n// 导出覆盖物组件\nexport {\n Marker,\n Polyline,\n Polygon,\n Circle,\n HeatMap,\n MultiPoint,\n Cluster,\n} from './components/overlays';\n\n// 默认导出:直接重新导出所有模块\nexport { default } from './ExpoGaodeMapModule';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,SAAS;AACT,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC;AAExB,qBAAqB;AACrB,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAKrE,WAAW;AACX,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAGxD,UAAU;AACV,OAAO,EACL,MAAM,EACN,QAAQ,EACR,OAAO,EACP,MAAM,EACN,OAAO,EACP,UAAU,EACV,OAAO,GACR,MAAM,uBAAuB,CAAC;AAE/B,WAAW;AACX,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC","sourcesContent":["// 导出类型定义\nexport * from './ExpoGaodeMap.types';\nexport * from './types';\n\n// 导出原生模块 - 直接使用,无需封装\nexport { default as ExpoGaodeMapModule } from './ExpoGaodeMapModule';\n\n// ExpoGaodeMapModule 重新导出类型,方便使用\nexport type { SDKConfig, PermissionStatus } from './ExpoGaodeMapModule';\n\n// 导出地图视图组件\nexport { default as MapView } from './ExpoGaodeMapView';\nexport type { MapViewRef } from './ExpoGaodeMapView';\n\n// 导出覆盖物组件\nexport {\n Marker,\n Polyline,\n Polygon,\n Circle,\n HeatMap,\n MultiPoint,\n Cluster,\n} from './components/overlays';\n\n// 默认导出原生模块\nexport { default } from './ExpoGaodeMapModule';\n"]}