expo-gaode-map 1.0.7 → 1.0.9

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 (43) hide show
  1. package/android/src/main/java/expo/modules/gaodemap/ExpoGaodeMapView.kt +19 -3
  2. package/android/src/main/java/expo/modules/gaodemap/ExpoGaodeMapViewModule.kt +1 -1
  3. package/android/src/main/java/expo/modules/gaodemap/managers/OverlayManager.kt +24 -6
  4. package/android/src/main/java/expo/modules/gaodemap/managers/UIManager.kt +28 -2
  5. package/android/src/main/java/expo/modules/gaodemap/overlays/CircleView.kt +6 -3
  6. package/android/src/main/java/expo/modules/gaodemap/overlays/MarkerView.kt +317 -2
  7. package/android/src/main/java/expo/modules/gaodemap/overlays/MarkerViewModule.kt +16 -0
  8. package/android/src/main/java/expo/modules/gaodemap/utils/ColorParser.kt +25 -0
  9. package/build/components/overlays/Circle.d.ts +2 -1
  10. package/build/components/overlays/Circle.d.ts.map +1 -1
  11. package/build/components/overlays/Circle.js +39 -0
  12. package/build/components/overlays/Circle.js.map +1 -1
  13. package/build/components/overlays/Marker.d.ts.map +1 -1
  14. package/build/components/overlays/Marker.js +46 -1
  15. package/build/components/overlays/Marker.js.map +1 -1
  16. package/build/types/location.types.d.ts +4 -0
  17. package/build/types/location.types.d.ts.map +1 -1
  18. package/build/types/location.types.js.map +1 -1
  19. package/build/types/map-view.types.d.ts +2 -1
  20. package/build/types/map-view.types.d.ts.map +1 -1
  21. package/build/types/map-view.types.js.map +1 -1
  22. package/build/types/overlays.types.d.ts +20 -1
  23. package/build/types/overlays.types.d.ts.map +1 -1
  24. package/build/types/overlays.types.js.map +1 -1
  25. package/docs/API.en.md +14 -4
  26. package/docs/API.md +52 -4
  27. package/docs/EXAMPLES.en.md +58 -1
  28. package/docs/EXAMPLES.md +208 -1
  29. package/ios/ExpoGaodeMapView.swift +36 -5
  30. package/ios/ExpoGaodeMapViewModule.swift +1 -1
  31. package/ios/managers/UIManager.swift +32 -4
  32. package/ios/overlays/CircleViewModule.swift +0 -2
  33. package/ios/overlays/MarkerView.swift +205 -7
  34. package/ios/overlays/MarkerViewModule.swift +8 -2
  35. package/ios/overlays/PolygonViewModule.swift +0 -2
  36. package/ios/overlays/PolylineViewModule.swift +0 -2
  37. package/ios/utils/ColorParser.swift +45 -0
  38. package/package.json +3 -2
  39. package/src/components/overlays/Circle.tsx +48 -0
  40. package/src/components/overlays/Marker.tsx +68 -1
  41. package/src/types/location.types.ts +5 -0
  42. package/src/types/map-view.types.ts +2 -1
  43. package/src/types/overlays.types.ts +23 -1
@@ -1,6 +1,45 @@
1
+ /*
2
+ * @Author : 尚博信_王强 wangqiang03@sunboxsoft.com
3
+ * @Date : 2025-11-13 15:02:04
4
+ * @LastEditors : 尚博信_王强 wangqiang03@sunboxsoft.com
5
+ * @LastEditTime : 2025-11-21 10:36:10
6
+ * @FilePath : /expo-gaode-map/src/components/overlays/Circle.tsx
7
+ * @Description :
8
+ *
9
+ * Copyright (c) 2025 by 尚博信_王强, All Rights Reserved.
10
+ */
1
11
  import * as React from 'react';
12
+ import { requireNativeViewManager } from 'expo-modules-core';
2
13
  import { MapContext, CircleEventContext } from '../../ExpoGaodeMapView';
14
+ const NativeCircleView = requireNativeViewManager('CircleView');
3
15
  export default function Circle(props) {
16
+ // 如果有 children,使用声明式 API
17
+ if (props.children) {
18
+ return <CircleDeclarative {...props}/>;
19
+ }
20
+ // 否则使用命令式 API
21
+ return <CircleImperative {...props}/>;
22
+ }
23
+ function CircleDeclarative(props) {
24
+ const eventManager = React.useContext(CircleEventContext);
25
+ const circleIdRef = React.useRef(`circle_${Date.now()}_${Math.random()}`);
26
+ React.useEffect(() => {
27
+ if (eventManager) {
28
+ eventManager.register(circleIdRef.current, {
29
+ onPress: props.onPress,
30
+ });
31
+ }
32
+ return () => {
33
+ if (eventManager) {
34
+ eventManager.unregister(circleIdRef.current);
35
+ }
36
+ };
37
+ }, [props.onPress]);
38
+ return (<NativeCircleView {...props}>
39
+ {props.children}
40
+ </NativeCircleView>);
41
+ }
42
+ function CircleImperative(props) {
4
43
  const mapRef = React.useContext(MapContext);
5
44
  const eventManager = React.useContext(CircleEventContext);
6
45
  const circleIdRef = React.useRef(null);
@@ -1 +1 @@
1
- {"version":3,"file":"Circle.js","sourceRoot":"","sources":["../../../src/components/overlays/Circle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAExE,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,KAAkB;IAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAgB,IAAI,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAErC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;IAC3B,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,WAAW,GAAG,GAAG,EAAE;YACvB,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;gBACrB,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;gBAC5B,OAAO;YACT,CAAC;YAED,MAAM,QAAQ,GAAG,UAAU,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzD,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;YAE/B,IAAI,YAAY,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClC,YAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE;oBAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB,CAAC,CAAC;YACL,CAAC;YAED,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvD,CAAC,CAAC;QAEF,WAAW,EAAE,CAAC;QAEd,OAAO,GAAG,EAAE;YACV,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;gBACxB,IAAI,YAAY,EAAE,CAAC;oBACjB,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC/C,CAAC;gBACD,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;oBACpB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,WAAW,CAAC,OAAO,IAAI,YAAY,EAAE,CAAC;YACxC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE;gBACzC,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAC;QACL,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAEpB,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,WAAW,CAAC,OAAO,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YAC3C,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IAExF,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import * as React from 'react';\nimport type { CircleProps } from '../../types';\nimport { MapContext, CircleEventContext } from '../../ExpoGaodeMapView';\n\nexport default function Circle(props: CircleProps) {\n const mapRef = React.useContext(MapContext);\n const eventManager = React.useContext(CircleEventContext);\n const circleIdRef = 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 circleId = `circle_${Date.now()}_${Math.random()}`;\n circleIdRef.current = circleId;\n \n if (eventManager && props.onPress) {\n eventManager.register(circleId, {\n onPress: props.onPress,\n });\n }\n \n mapRef.current.addCircle(circleId, propsRef.current);\n };\n \n checkAndAdd();\n \n return () => {\n if (circleIdRef.current) {\n if (eventManager) {\n eventManager.unregister(circleIdRef.current);\n }\n if (mapRef?.current) {\n mapRef.current.removeCircle(circleIdRef.current);\n }\n }\n };\n }, []);\n\n React.useEffect(() => {\n if (circleIdRef.current && eventManager) {\n eventManager.register(circleIdRef.current, {\n onPress: props.onPress,\n });\n }\n }, [props.onPress]);\n\n React.useEffect(() => {\n if (circleIdRef.current && mapRef?.current) {\n mapRef.current.updateCircle(circleIdRef.current, props);\n }\n }, [props.center, props.radius, props.fillColor, props.strokeColor, props.strokeWidth]);\n \n return null;\n}\n"]}
1
+ {"version":3,"file":"Circle.js","sourceRoot":"","sources":["../../../src/components/overlays/Circle.tsx"],"names":[],"mappings":"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","sourcesContent":["/*\n * @Author : 尚博信_王强 wangqiang03@sunboxsoft.com\n * @Date : 2025-11-13 15:02:04\n * @LastEditors : 尚博信_王强 wangqiang03@sunboxsoft.com\n * @LastEditTime : 2025-11-21 10:36:10\n * @FilePath : /expo-gaode-map/src/components/overlays/Circle.tsx\n * @Description :\n *\n * Copyright (c) 2025 by 尚博信_王强, All Rights Reserved.\n */\nimport * as React from 'react';\nimport { requireNativeViewManager } from 'expo-modules-core';\nimport type { CircleProps } from '../../types';\nimport { MapContext, CircleEventContext } from '../../ExpoGaodeMapView';\n\nconst NativeCircleView = requireNativeViewManager('CircleView');\n\nexport default function Circle(props: CircleProps) {\n // 如果有 children,使用声明式 API\n if (props.children) {\n return <CircleDeclarative {...props} />;\n }\n // 否则使用命令式 API\n return <CircleImperative {...props} />;\n}\n\nfunction CircleDeclarative(props: CircleProps) {\n const eventManager = React.useContext(CircleEventContext);\n const circleIdRef = React.useRef(`circle_${Date.now()}_${Math.random()}`);\n \n React.useEffect(() => {\n if (eventManager) {\n eventManager.register(circleIdRef.current, {\n onPress: props.onPress,\n });\n }\n return () => {\n if (eventManager) {\n eventManager.unregister(circleIdRef.current);\n }\n };\n }, [props.onPress]);\n \n return (\n <NativeCircleView\n {...props}\n >\n {props.children}\n </NativeCircleView>\n );\n}\n\nfunction CircleImperative(props: CircleProps) {\n const mapRef = React.useContext(MapContext);\n const eventManager = React.useContext(CircleEventContext);\n const circleIdRef = 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 circleId = `circle_${Date.now()}_${Math.random()}`;\n circleIdRef.current = circleId;\n \n if (eventManager && props.onPress) {\n eventManager.register(circleId, {\n onPress: props.onPress,\n });\n }\n \n mapRef.current.addCircle(circleId, propsRef.current);\n };\n \n checkAndAdd();\n \n return () => {\n if (circleIdRef.current) {\n if (eventManager) {\n eventManager.unregister(circleIdRef.current);\n }\n if (mapRef?.current) {\n mapRef.current.removeCircle(circleIdRef.current);\n }\n }\n };\n }, []);\n\n React.useEffect(() => {\n if (circleIdRef.current && eventManager) {\n eventManager.register(circleIdRef.current, {\n onPress: props.onPress,\n });\n }\n }, [props.onPress]);\n\n React.useEffect(() => {\n if (circleIdRef.current && mapRef?.current) {\n mapRef.current.updateCircle(circleIdRef.current, props);\n }\n }, [props.center, props.radius, props.fillColor, props.strokeColor, props.strokeWidth]);\n \n return null;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Marker.d.ts","sourceRoot":"","sources":["../../../src/components/overlays/Marker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,KAAK,EAAE,WAAW,qBAEhD"}
1
+ {"version":3,"file":"Marker.d.ts","sourceRoot":"","sources":["../../../src/components/overlays/Marker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,KAAK,EAAE,WAAW,qBAOhD"}
@@ -1,9 +1,51 @@
1
1
  import * as React from 'react';
2
2
  import { Image } from 'react-native';
3
+ import { requireNativeViewManager } from 'expo-modules-core';
3
4
  import { MapContext, MarkerEventContext } from '../../ExpoGaodeMapView';
5
+ const NativeMarkerView = requireNativeViewManager('MarkerView');
4
6
  export default function Marker(props) {
7
+ // 如果有 children,使用声明式 API
8
+ if (props.children) {
9
+ return <MarkerDeclarative {...props}/>;
10
+ }
11
+ // 否则使用命令式 API
5
12
  return <MarkerImperative {...props}/>;
6
13
  }
14
+ function MarkerDeclarative(props) {
15
+ const eventManager = React.useContext(MarkerEventContext);
16
+ const markerIdRef = React.useRef(`marker_${Date.now()}_${Math.random()}`);
17
+ // 根据是否有 children 来决定使用哪个尺寸属性
18
+ // 有 children:使用 customViewWidth/customViewHeight(默认 80x30)
19
+ // 无 children:使用 iconWidth/iconHeight(用于自定义图标)
20
+ const containerWidth = props.children
21
+ ? (props.customViewWidth && props.customViewWidth > 0 ? props.customViewWidth : 80)
22
+ : (props.iconWidth || 0);
23
+ 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 position={props.position} 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 }}>
46
+ {props.children}
47
+ </NativeMarkerView>);
48
+ }
7
49
  function MarkerImperative(props) {
8
50
  const mapRef = React.useContext(MapContext);
9
51
  const eventManager = React.useContext(MarkerEventContext);
@@ -56,7 +98,7 @@ function MarkerImperative(props) {
56
98
  onDragEnd: props.onDragEnd,
57
99
  });
58
100
  }
59
- }, [props.onPress, props.onDragStart, props.onDrag, props.onDragEnd]);
101
+ }, [eventManager, props.onPress, props.onDragStart, props.onDrag, props.onDragEnd]);
60
102
  React.useEffect(() => {
61
103
  if (markerIdRef.current && mapRef?.current) {
62
104
  const processedProps = { ...props };
@@ -67,6 +109,7 @@ function MarkerImperative(props) {
67
109
  mapRef.current.updateMarker(markerIdRef.current, processedProps);
68
110
  }
69
111
  }, [
112
+ mapRef,
70
113
  props.position?.latitude,
71
114
  props.position?.longitude,
72
115
  props.title,
@@ -74,6 +117,8 @@ function MarkerImperative(props) {
74
117
  props.icon,
75
118
  props.iconWidth,
76
119
  props.iconHeight,
120
+ props.customViewWidth,
121
+ props.customViewHeight,
77
122
  props.pinColor
78
123
  ]);
79
124
  return null;
@@ -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 { MapContext, MarkerEventContext } from '../../ExpoGaodeMapView';\nimport type { MarkerProps } from '../../types';\n\nexport default function Marker(props: MarkerProps) {\n return <MarkerImperative {...props} />;\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 }, [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 props.position?.latitude,\n props.position?.longitude,\n props.title,\n props.draggable,\n props.icon,\n props.iconWidth,\n props.iconHeight,\n props.pinColor\n ]);\n \n return null;\n}\n"]}
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 position={props.position}\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"]}
@@ -32,6 +32,10 @@ export interface Coordinates extends LatLng {
32
32
  * @platform ios
33
33
  */
34
34
  isAvailableCoordinate?: boolean;
35
+ /**
36
+ * 格式化地址(仅在启用逆地理编码时可用)
37
+ */
38
+ address?: string;
35
39
  }
36
40
  /**
37
41
  * 逆地理编码信息
@@ -1 +1 @@
1
- {"version":3,"file":"location.types.d.ts","sourceRoot":"","sources":["../../src/types/location.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"location.types.d.ts","sourceRoot":"","sources":["../../src/types/location.types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"location.types.js","sourceRoot":"","sources":["../../src/types/location.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsHH;;;GAGG;AACH,MAAM,CAAN,IAAY,gBA8BX;AA9BD,WAAY,gBAAgB;IAC1B;;OAEG;IACH,iFAAqB,CAAA;IAErB;;OAEG;IACH,uDAAQ,CAAA;IAER;;OAEG;IACH,+EAAoB,CAAA;IAEpB;;OAEG;IACH,yEAAiB,CAAA;IAEjB;;OAEG;IACH,iEAAa,CAAA;IAEb;;OAEG;IACH,6EAAmB,CAAA;AACrB,CAAC,EA9BW,gBAAgB,KAAhB,gBAAgB,QA8B3B;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,YAeX;AAfD,WAAY,YAAY;IACtB;;OAEG;IACH,+DAAgB,CAAA;IAEhB;;OAEG;IACH,iEAAiB,CAAA;IAEjB;;OAEG;IACH,iEAAiB,CAAA;AACnB,CAAC,EAfW,YAAY,KAAZ,YAAY,QAevB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,cAwCX;AAxCD,WAAY,cAAc;IACxB;;OAEG;IACH,oDAAS,CAAA;IAET;;OAEG;IACH,qDAAS,CAAA;IAET;;OAEG;IACH,uDAAU,CAAA;IAEV;;OAEG;IACH,uDAAU,CAAA;IAEV;;OAEG;IACH,yDAAW,CAAA;IAEX;;OAEG;IACH,uDAAU,CAAA;IAEV;;OAEG;IACH,uDAAU,CAAA;IAEV;;OAEG;IACH,iDAAO,CAAA;AACT,CAAC,EAxCW,cAAc,KAAd,cAAc,QAwCzB","sourcesContent":["/**\n * 高德地图定位相关类型定义\n * 基于 Expo Modules API\n */\n\nimport type { LatLng } from './common.types';\n\n/**\n * 坐标信息(基础定位)\n */\nexport interface Coordinates extends LatLng {\n /**\n * 海拔高度(米)\n */\n altitude: number;\n\n /**\n * 水平精度(米)\n */\n accuracy: number;\n\n /**\n * 移动方向(度,需要 GPS)\n */\n heading: number;\n\n /**\n * 移动速度(米/秒,需要 GPS)\n */\n speed: number;\n\n /**\n * 时间戳\n */\n timestamp: number;\n\n /**\n * 是否有可用坐标\n * @platform ios\n */\n isAvailableCoordinate?: boolean;\n}\n\n/**\n * 逆地理编码信息\n */\nexport interface ReGeocode extends Coordinates {\n /**\n * 格式化地址\n */\n address: string;\n\n /**\n * 国家\n */\n country: string;\n\n /**\n * 省/直辖市,如 `湖北省`\n */\n province: string;\n\n /**\n * 市,如 `武汉市`\n */\n city: string;\n\n /**\n * 区,如 `武昌区`\n */\n district: string;\n\n /**\n * 城市编码\n */\n cityCode: string;\n\n /**\n * 区域编码\n */\n adCode: string;\n\n /**\n * 街道名称\n */\n street: string;\n\n /**\n * 门牌号\n */\n streetNumber: string;\n\n /**\n * 兴趣点名称\n */\n poiName: string;\n\n /**\n * 所属兴趣点名称\n */\n aoiName: string;\n\n /**\n * 定位信息描述\n * @platform android\n */\n description?: string;\n\n /**\n * 坐标系类型\n * @platform android\n */\n coordType?: 'GCJ02' | 'WGS84';\n\n /**\n * 室内定位建筑物ID\n * @platform android\n */\n buildingId?: string;\n}\n\n/**\n * 定位精度级别\n * @platform ios\n */\nexport enum LocationAccuracy {\n /**\n * 最适合导航\n */\n BestForNavigation = 0,\n\n /**\n * 最高精度(约10米,耗时约10秒)\n */\n Best = 1,\n\n /**\n * 10米精度\n */\n NearestTenMeters = 2,\n\n /**\n * 100米精度(推荐)\n */\n HundredMeters = 3,\n\n /**\n * 1公里精度\n */\n Kilometer = 4,\n\n /**\n * 3公里精度\n */\n ThreeKilometers = 5,\n}\n\n/**\n * 定位模式\n * @platform android\n */\nexport enum LocationMode {\n /**\n * 高精度模式(网络+卫星)\n */\n HighAccuracy = 1,\n\n /**\n * 低功耗模式(仅网络)\n */\n BatterySaving = 2,\n\n /**\n * 仅设备模式(仅卫星)\n */\n DeviceSensors = 3,\n}\n\n/**\n * 坐标系类型\n */\nexport enum CoordinateType {\n /**\n * 高德坐标系\n */\n AMap = -1,\n\n /**\n * 百度坐标系\n */\n Baidu = 0,\n\n /**\n * MapBar坐标系\n */\n MapBar = 1,\n\n /**\n * MapABC坐标系\n */\n MapABC = 2,\n\n /**\n * 搜搜地图坐标系\n */\n SoSoMap = 3,\n\n /**\n * 阿里云坐标系\n */\n AliYun = 4,\n\n /**\n * 谷歌坐标系\n */\n Google = 5,\n\n /**\n * GPS坐标系\n */\n GPS = 6,\n}\n\n/**\n * 地理语言\n */\nexport type GeoLanguage = 'DEFAULT' | 'EN' | 'ZH';\n\n/**\n * 网络协议\n * @platform android\n */\nexport type LocationProtocol = 'HTTP' | 'HTTPS';\n\n/**\n * 定位配置选项\n */\nexport interface LocationOptions {\n /**\n * 是否返回逆地理信息\n * @default true\n */\n withReGeocode?: boolean;\n\n /**\n * 定位精度\n * @platform ios\n */\n accuracy?: LocationAccuracy;\n\n /**\n * 定位模式\n * @platform android\n */\n mode?: LocationMode;\n\n /**\n * 是否单次定位\n * @platform android\n * @default false\n */\n onceLocation?: boolean;\n\n /**\n * 定位间隔(毫秒)\n * @platform android\n * @default 2000\n */\n interval?: number;\n\n /**\n * 定位超时时间(秒)\n * @platform ios\n * @default 10\n */\n timeout?: number;\n\n /**\n * 逆地理编码超时时间(秒)\n * @platform ios\n * @default 2\n */\n reGeocodeTimeout?: number;\n\n /**\n * 最小更新距离(米)\n * @platform ios\n */\n distanceFilter?: number;\n\n /**\n * 是否启用设备传感器\n * @platform android\n * @default false\n */\n sensorEnable?: boolean;\n\n /**\n * 是否允许WIFI刷新\n * @platform android\n * @default true\n */\n wifiScan?: boolean;\n\n /**\n * 是否GPS优先\n * @platform android\n * @default false\n */\n gpsFirst?: boolean;\n\n /**\n * 是否等待WIFI列表刷新\n * 定位精度会更高,但是定位速度会变慢1-3秒\n * @platform android\n * @default false\n */\n onceLocationLatest?: boolean;\n\n /**\n * 逆地理语言\n */\n geoLanguage?: GeoLanguage;\n\n /**\n * 是否允许后台定位\n * @default false\n */\n allowsBackgroundLocationUpdates?: boolean;\n\n /**\n * 是否自动暂停定位\n * @platform ios\n * @default false\n */\n pausesLocationUpdatesAutomatically?: boolean;\n\n /**\n * 是否使用缓存策略\n * @platform android\n * @default true\n */\n locationCacheEnable?: boolean;\n\n /**\n * 网络请求超时时间(毫秒)\n * @platform android\n * @default 30000\n */\n httpTimeout?: number;\n\n /**\n * 网络协议\n * @platform android\n * @default 'HTTP'\n */\n protocol?: LocationProtocol;\n}\n\n/**\n * 定位事件监听器\n */\nexport type LocationListener = (location: Coordinates | ReGeocode) => void;\n"]}
1
+ {"version":3,"file":"location.types.js","sourceRoot":"","sources":["../../src/types/location.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA2HH;;;GAGG;AACH,MAAM,CAAN,IAAY,gBA8BX;AA9BD,WAAY,gBAAgB;IAC1B;;OAEG;IACH,iFAAqB,CAAA;IAErB;;OAEG;IACH,uDAAQ,CAAA;IAER;;OAEG;IACH,+EAAoB,CAAA;IAEpB;;OAEG;IACH,yEAAiB,CAAA;IAEjB;;OAEG;IACH,iEAAa,CAAA;IAEb;;OAEG;IACH,6EAAmB,CAAA;AACrB,CAAC,EA9BW,gBAAgB,KAAhB,gBAAgB,QA8B3B;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,YAeX;AAfD,WAAY,YAAY;IACtB;;OAEG;IACH,+DAAgB,CAAA;IAEhB;;OAEG;IACH,iEAAiB,CAAA;IAEjB;;OAEG;IACH,iEAAiB,CAAA;AACnB,CAAC,EAfW,YAAY,KAAZ,YAAY,QAevB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,cAwCX;AAxCD,WAAY,cAAc;IACxB;;OAEG;IACH,oDAAS,CAAA;IAET;;OAEG;IACH,qDAAS,CAAA;IAET;;OAEG;IACH,uDAAU,CAAA;IAEV;;OAEG;IACH,uDAAU,CAAA;IAEV;;OAEG;IACH,yDAAW,CAAA;IAEX;;OAEG;IACH,uDAAU,CAAA;IAEV;;OAEG;IACH,uDAAU,CAAA;IAEV;;OAEG;IACH,iDAAO,CAAA;AACT,CAAC,EAxCW,cAAc,KAAd,cAAc,QAwCzB","sourcesContent":["/**\n * 高德地图定位相关类型定义\n * 基于 Expo Modules API\n */\n\nimport type { LatLng } from './common.types';\n\n/**\n * 坐标信息(基础定位)\n */\nexport interface Coordinates extends LatLng {\n /**\n * 海拔高度(米)\n */\n altitude: number;\n\n /**\n * 水平精度(米)\n */\n accuracy: number;\n\n /**\n * 移动方向(度,需要 GPS)\n */\n heading: number;\n\n /**\n * 移动速度(米/秒,需要 GPS)\n */\n speed: number;\n\n /**\n * 时间戳\n */\n timestamp: number;\n\n /**\n * 是否有可用坐标\n * @platform ios\n */\n isAvailableCoordinate?: boolean;\n\n /**\n * 格式化地址(仅在启用逆地理编码时可用)\n */\n address?: string;\n}\n\n/**\n * 逆地理编码信息\n */\nexport interface ReGeocode extends Coordinates {\n /**\n * 格式化地址\n */\n address: string;\n\n /**\n * 国家\n */\n country: string;\n\n /**\n * 省/直辖市,如 `湖北省`\n */\n province: string;\n\n /**\n * 市,如 `武汉市`\n */\n city: string;\n\n /**\n * 区,如 `武昌区`\n */\n district: string;\n\n /**\n * 城市编码\n */\n cityCode: string;\n\n /**\n * 区域编码\n */\n adCode: string;\n\n /**\n * 街道名称\n */\n street: string;\n\n /**\n * 门牌号\n */\n streetNumber: string;\n\n /**\n * 兴趣点名称\n */\n poiName: string;\n\n /**\n * 所属兴趣点名称\n */\n aoiName: string;\n\n /**\n * 定位信息描述\n * @platform android\n */\n description?: string;\n\n /**\n * 坐标系类型\n * @platform android\n */\n coordType?: 'GCJ02' | 'WGS84';\n\n /**\n * 室内定位建筑物ID\n * @platform android\n */\n buildingId?: string;\n}\n\n/**\n * 定位精度级别\n * @platform ios\n */\nexport enum LocationAccuracy {\n /**\n * 最适合导航\n */\n BestForNavigation = 0,\n\n /**\n * 最高精度(约10米,耗时约10秒)\n */\n Best = 1,\n\n /**\n * 10米精度\n */\n NearestTenMeters = 2,\n\n /**\n * 100米精度(推荐)\n */\n HundredMeters = 3,\n\n /**\n * 1公里精度\n */\n Kilometer = 4,\n\n /**\n * 3公里精度\n */\n ThreeKilometers = 5,\n}\n\n/**\n * 定位模式\n * @platform android\n */\nexport enum LocationMode {\n /**\n * 高精度模式(网络+卫星)\n */\n HighAccuracy = 1,\n\n /**\n * 低功耗模式(仅网络)\n */\n BatterySaving = 2,\n\n /**\n * 仅设备模式(仅卫星)\n */\n DeviceSensors = 3,\n}\n\n/**\n * 坐标系类型\n */\nexport enum CoordinateType {\n /**\n * 高德坐标系\n */\n AMap = -1,\n\n /**\n * 百度坐标系\n */\n Baidu = 0,\n\n /**\n * MapBar坐标系\n */\n MapBar = 1,\n\n /**\n * MapABC坐标系\n */\n MapABC = 2,\n\n /**\n * 搜搜地图坐标系\n */\n SoSoMap = 3,\n\n /**\n * 阿里云坐标系\n */\n AliYun = 4,\n\n /**\n * 谷歌坐标系\n */\n Google = 5,\n\n /**\n * GPS坐标系\n */\n GPS = 6,\n}\n\n/**\n * 地理语言\n */\nexport type GeoLanguage = 'DEFAULT' | 'EN' | 'ZH';\n\n/**\n * 网络协议\n * @platform android\n */\nexport type LocationProtocol = 'HTTP' | 'HTTPS';\n\n/**\n * 定位配置选项\n */\nexport interface LocationOptions {\n /**\n * 是否返回逆地理信息\n * @default true\n */\n withReGeocode?: boolean;\n\n /**\n * 定位精度\n * @platform ios\n */\n accuracy?: LocationAccuracy;\n\n /**\n * 定位模式\n * @platform android\n */\n mode?: LocationMode;\n\n /**\n * 是否单次定位\n * @platform android\n * @default false\n */\n onceLocation?: boolean;\n\n /**\n * 定位间隔(毫秒)\n * @platform android\n * @default 2000\n */\n interval?: number;\n\n /**\n * 定位超时时间(秒)\n * @platform ios\n * @default 10\n */\n timeout?: number;\n\n /**\n * 逆地理编码超时时间(秒)\n * @platform ios\n * @default 2\n */\n reGeocodeTimeout?: number;\n\n /**\n * 最小更新距离(米)\n * @platform ios\n */\n distanceFilter?: number;\n\n /**\n * 是否启用设备传感器\n * @platform android\n * @default false\n */\n sensorEnable?: boolean;\n\n /**\n * 是否允许WIFI刷新\n * @platform android\n * @default true\n */\n wifiScan?: boolean;\n\n /**\n * 是否GPS优先\n * @platform android\n * @default false\n */\n gpsFirst?: boolean;\n\n /**\n * 是否等待WIFI列表刷新\n * 定位精度会更高,但是定位速度会变慢1-3秒\n * @platform android\n * @default false\n */\n onceLocationLatest?: boolean;\n\n /**\n * 逆地理语言\n */\n geoLanguage?: GeoLanguage;\n\n /**\n * 是否允许后台定位\n * @default false\n */\n allowsBackgroundLocationUpdates?: boolean;\n\n /**\n * 是否自动暂停定位\n * @platform ios\n * @default false\n */\n pausesLocationUpdatesAutomatically?: boolean;\n\n /**\n * 是否使用缓存策略\n * @platform android\n * @default true\n */\n locationCacheEnable?: boolean;\n\n /**\n * 网络请求超时时间(毫秒)\n * @platform android\n * @default 30000\n */\n httpTimeout?: number;\n\n /**\n * 网络协议\n * @platform android\n * @default 'HTTP'\n */\n protocol?: LocationProtocol;\n}\n\n/**\n * 定位事件监听器\n */\nexport type LocationListener = (location: Coordinates | ReGeocode) => void;\n"]}
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import type { StyleProp, ViewStyle } from 'react-native';
6
6
  import type { CameraPosition, LatLng, LatLngBounds, MapPoi, MapType, Point } from './common.types';
7
+ import type { Coordinates, ReGeocode } from './location.types';
7
8
  /**
8
9
  * 地图相机事件
9
10
  */
@@ -165,7 +166,7 @@ export interface MapViewProps {
165
166
  /**
166
167
  * 地图定位更新事件
167
168
  */
168
- onLocation?: (event: Location) => void;
169
+ onLocation?: (event: Coordinates | ReGeocode) => void;
169
170
  /**
170
171
  * Marker 点击事件
171
172
  */
@@ -1 +1 @@
1
- {"version":3,"file":"map-view.types.d.ts","sourceRoot":"","sources":["../../src/types/map-view.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"map-view.types.d.ts","sourceRoot":"","sources":["../../src/types/map-view.types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"map-view.types.js","sourceRoot":"","sources":["../../src/types/map-view.types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * 高德地图视图相关类型定义\n * 基于 Expo Modules API\n */\n\nimport type { StyleProp, ViewStyle } from 'react-native';\nimport type { CameraPosition, LatLng, LatLngBounds, MapPoi, MapType, Point } from './common.types';\n\n/**\n * 地图相机事件\n */\nexport interface CameraEvent {\n /**\n * 相机位置\n */\n cameraPosition: CameraPosition;\n\n /**\n * 可见区域边界\n */\n latLngBounds: LatLngBounds;\n}\n\n/**\n * 地图视图属性\n */\nexport interface MapViewProps {\n /**\n * 地图类型\n */\n mapType?: MapType;\n\n /**\n * 初始相机位置\n */\n initialCameraPosition?: CameraPosition;\n\n /**\n * 是否显示当前定位\n */\n myLocationEnabled?: boolean;\n\n /**\n * 是否跟随用户位置\n * @default false\n */\n followUserLocation?: boolean;\n\n /**\n * 定位蓝点配置\n */\n userLocationRepresentation?: {\n /** 精度圈是否显示 @default true */\n showsAccuracyRing?: boolean;\n /** 是否显示方向指示 @default true @platform ios */\n showsHeadingIndicator?: boolean;\n /** 精度圈填充颜色 支持 '#RRGGBB'、'red' 或 ARGB 数字 */\n fillColor?: string | number;\n /** 精度圈边线颜色 */\n strokeColor?: string | number;\n /** 精度圈边线宽度 @default 0 */\n lineWidth?: number;\n /** 内部蓝色圆点是否使用律动效果 @default true @platform ios */\n enablePulseAnimation?: boolean;\n /** 定位点背景色 @default 'white' @platform ios */\n locationDotBgColor?: string | number;\n /** 定位点蓝色圆点颜色 @default 'blue' @platform ios */\n locationDotFillColor?: string | number;\n /** 定位图标 支持网络图片(http/https)、本地文件(file://)或资源名称 */\n image?: string;\n /** 定位图标宽度(像素) */\n imageWidth?: number;\n /** 定位图标高度(像素) */\n imageHeight?: number;\n };\n\n /**\n * 是否显示室内地图\n * \n */\n indoorViewEnabled?: boolean;\n\n /**\n * 是否显示3D建筑\n */\n buildingsEnabled?: boolean;\n\n /**\n * 是否显示标注\n */\n labelsEnabled?: boolean;\n\n /**\n * 是否显示指南针\n */\n compassEnabled?: boolean;\n\n /**\n * 是否显示缩放按钮\n * @platform android\n */\n zoomControlsEnabled?: boolean;\n\n /**\n * 是否显示比例尺\n */\n scaleControlsEnabled?: boolean;\n\n /**\n * 是否显示定位按钮\n * @platform android\n */\n myLocationButtonEnabled?: boolean;\n\n /**\n * 是否显示路况\n */\n trafficEnabled?: boolean;\n\n /**\n * 最大缩放级别\n */\n maxZoom?: number;\n\n /**\n * 最小缩放级别\n */\n minZoom?: number;\n\n /**\n * 是否启用缩放手势\n */\n zoomGesturesEnabled?: boolean;\n\n /**\n * 是否启用滑动手势\n */\n scrollGesturesEnabled?: boolean;\n\n /**\n * 是否启用旋转手势\n */\n rotateGesturesEnabled?: boolean;\n\n /**\n * 是否启用倾斜手势\n */\n tiltGesturesEnabled?: boolean;\n\n /**\n * 定位的最小更新距离(米)\n * @platform ios\n */\n distanceFilter?: number;\n\n /**\n * 最小更新角度(度)\n * @platform ios\n */\n headingFilter?: number;\n\n /**\n * 样式\n */\n style?: StyleProp<ViewStyle>;\n\n /**\n * 点击地图事件\n */\n onMapPress?: (event: LatLng) => void;\n\n /**\n * 点击标注点事件\n */\n onPressPoi?: (event: MapPoi) => void;\n\n /**\n * 长按地图事件\n */\n onMapLongPress?: (event: LatLng) => void;\n\n /**\n * 地图状态改变事件(实时触发)\n */\n onCameraMove?: (event: CameraEvent) => void;\n\n /**\n * 地图状态改变完成事件\n */\n onCameraIdle?: (event: CameraEvent) => void;\n\n /**\n * 地图加载完成事件\n */\n onLoad?: (event: {}) => void;\n\n /**\n * 地图定位更新事件\n */\n onLocation?: (event: Location) => void;\n\n /**\n * Marker 点击事件\n */\n onMarkerPress?: (event: { markerId: string } & LatLng) => void;\n\n /**\n * Marker 拖拽开始事件\n */\n onMarkerDragStart?: (event: { markerId: string } & LatLng) => void;\n\n /**\n * Marker 拖拽中事件\n */\n onMarkerDrag?: (event: { markerId: string } & LatLng) => void;\n\n /**\n * Marker 拖拽结束事件\n */\n onMarkerDragEnd?: (event: { markerId: string } & LatLng) => void;\n\n /**\n * Circle 点击事件\n */\n onCirclePress?: (event: { circleId: string } & LatLng) => void;\n\n /**\n * Polygon 点击事件\n */\n onPolygonPress?: (event: { polygonId: string } & LatLng) => void;\n\n /**\n * Polyline 点击事件\n */\n onPolylinePress?: (event: { polylineId: string } & LatLng) => void;\n\n /**\n * 子组件\n */\n children?: React.ReactNode;\n}\n\n/**\n * 地图视图方法\n */\nexport interface MapViewMethods {\n /**\n * 移动相机\n * @param cameraPosition 目标相机位置\n * @param duration 动画时长(毫秒)\n */\n moveCamera(cameraPosition: CameraPosition, duration?: number): void;\n\n /**\n * 将屏幕坐标转换为地理坐标\n * @param point 屏幕坐标\n * @returns 地理坐标\n */\n getLatLng(point: Point): Promise<LatLng>;\n}\n\n/**\n * MapView Ref 公开接口(用户使用)\n */\nexport interface MapViewRef {\n moveCamera(position: CameraPosition, duration?: number): Promise<void>;\n getLatLng(point: Point): Promise<LatLng>;\n setCenter(center: LatLng, animated?: boolean): Promise<void>;\n setZoom(zoom: number, animated?: boolean): Promise<void>;\n getCameraPosition(): Promise<CameraPosition>;\n addCircle(id: string, props: import('./overlays.types').CircleProps): Promise<void>;\n removeCircle(id: string): Promise<void>;\n updateCircle(id: string, props: Partial<import('./overlays.types').CircleProps>): Promise<void>;\n addMarker(id: string, props: import('./overlays.types').MarkerProps): Promise<void>;\n removeMarker(id: string): Promise<void>;\n updateMarker(id: string, props: Partial<import('./overlays.types').MarkerProps>): Promise<void>;\n addPolyline(id: string, props: import('./overlays.types').PolylineProps): Promise<void>;\n removePolyline(id: string): Promise<void>;\n updatePolyline(id: string, props: Partial<import('./overlays.types').PolylineProps>): Promise<void>;\n addPolygon(id: string, props: import('./overlays.types').PolygonProps): Promise<void>;\n removePolygon(id: string): Promise<void>;\n updatePolygon(id: string, props: Partial<import('./overlays.types').PolygonProps>): Promise<void>;\n}\n\n/**\n * 原生 MapView Ref 接口(所有参数必需)\n */\nexport interface NativeMapViewRef {\n moveCamera(position: CameraPosition, duration: number): Promise<void>;\n getLatLng(point: Point): Promise<LatLng>;\n setCenter(center: LatLng, animated: boolean): Promise<void>;\n setZoom(zoom: number, animated: boolean): Promise<void>;\n getCameraPosition(): Promise<CameraPosition>;\n addCircle(id: string, props: import('./overlays.types').CircleProps): Promise<void>;\n removeCircle(id: string): Promise<void>;\n updateCircle(id: string, props: Partial<import('./overlays.types').CircleProps>): Promise<void>;\n addMarker(id: string, props: import('./overlays.types').MarkerProps): Promise<void>;\n removeMarker(id: string): Promise<void>;\n updateMarker(id: string, props: Partial<import('./overlays.types').MarkerProps>): Promise<void>;\n addPolyline(id: string, props: import('./overlays.types').PolylineProps): Promise<void>;\n removePolyline(id: string): Promise<void>;\n updatePolyline(id: string, props: Partial<import('./overlays.types').PolylineProps>): Promise<void>;\n addPolygon(id: string, props: import('./overlays.types').PolygonProps): Promise<void>;\n removePolygon(id: string): Promise<void>;\n updatePolygon(id: string, props: Partial<import('./overlays.types').PolygonProps>): Promise<void>;\n}\n"]}
1
+ {"version":3,"file":"map-view.types.js","sourceRoot":"","sources":["../../src/types/map-view.types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * 高德地图视图相关类型定义\n * 基于 Expo Modules API\n */\n\nimport type { StyleProp, ViewStyle } from 'react-native';\nimport type { CameraPosition, LatLng, LatLngBounds, MapPoi, MapType, Point } from './common.types';\nimport type { Coordinates, ReGeocode } from './location.types';\n\n/**\n * 地图相机事件\n */\nexport interface CameraEvent {\n /**\n * 相机位置\n */\n cameraPosition: CameraPosition;\n\n /**\n * 可见区域边界\n */\n latLngBounds: LatLngBounds;\n}\n\n/**\n * 地图视图属性\n */\nexport interface MapViewProps {\n /**\n * 地图类型\n */\n mapType?: MapType;\n\n /**\n * 初始相机位置\n */\n initialCameraPosition?: CameraPosition;\n\n /**\n * 是否显示当前定位\n */\n myLocationEnabled?: boolean;\n\n /**\n * 是否跟随用户位置\n * @default false\n */\n followUserLocation?: boolean;\n\n /**\n * 定位蓝点配置\n */\n userLocationRepresentation?: {\n /** 精度圈是否显示 @default true */\n showsAccuracyRing?: boolean;\n /** 是否显示方向指示 @default true @platform ios */\n showsHeadingIndicator?: boolean;\n /** 精度圈填充颜色 支持 '#RRGGBB'、'red' 或 ARGB 数字 */\n fillColor?: string | number;\n /** 精度圈边线颜色 */\n strokeColor?: string | number;\n /** 精度圈边线宽度 @default 0 */\n lineWidth?: number;\n /** 内部蓝色圆点是否使用律动效果 @default true @platform ios */\n enablePulseAnimation?: boolean;\n /** 定位点背景色 @default 'white' @platform ios */\n locationDotBgColor?: string | number;\n /** 定位点蓝色圆点颜色 @default 'blue' @platform ios */\n locationDotFillColor?: string | number;\n /** 定位图标 支持网络图片(http/https)、本地文件(file://)或资源名称 */\n image?: string;\n /** 定位图标宽度(像素) */\n imageWidth?: number;\n /** 定位图标高度(像素) */\n imageHeight?: number;\n };\n\n /**\n * 是否显示室内地图\n * \n */\n indoorViewEnabled?: boolean;\n\n /**\n * 是否显示3D建筑\n */\n buildingsEnabled?: boolean;\n\n /**\n * 是否显示标注\n */\n labelsEnabled?: boolean;\n\n /**\n * 是否显示指南针\n */\n compassEnabled?: boolean;\n\n /**\n * 是否显示缩放按钮\n * @platform android\n */\n zoomControlsEnabled?: boolean;\n\n /**\n * 是否显示比例尺\n */\n scaleControlsEnabled?: boolean;\n\n /**\n * 是否显示定位按钮\n * @platform android\n */\n myLocationButtonEnabled?: boolean;\n\n /**\n * 是否显示路况\n */\n trafficEnabled?: boolean;\n\n /**\n * 最大缩放级别\n */\n maxZoom?: number;\n\n /**\n * 最小缩放级别\n */\n minZoom?: number;\n\n /**\n * 是否启用缩放手势\n */\n zoomGesturesEnabled?: boolean;\n\n /**\n * 是否启用滑动手势\n */\n scrollGesturesEnabled?: boolean;\n\n /**\n * 是否启用旋转手势\n */\n rotateGesturesEnabled?: boolean;\n\n /**\n * 是否启用倾斜手势\n */\n tiltGesturesEnabled?: boolean;\n\n /**\n * 定位的最小更新距离(米)\n * @platform ios\n */\n distanceFilter?: number;\n\n /**\n * 最小更新角度(度)\n * @platform ios\n */\n headingFilter?: number;\n\n /**\n * 样式\n */\n style?: StyleProp<ViewStyle>;\n\n /**\n * 点击地图事件\n */\n onMapPress?: (event: LatLng) => void;\n\n /**\n * 点击标注点事件\n */\n onPressPoi?: (event: MapPoi) => void;\n\n /**\n * 长按地图事件\n */\n onMapLongPress?: (event: LatLng) => void;\n\n /**\n * 地图状态改变事件(实时触发)\n */\n onCameraMove?: (event: CameraEvent) => void;\n\n /**\n * 地图状态改变完成事件\n */\n onCameraIdle?: (event: CameraEvent) => void;\n\n /**\n * 地图加载完成事件\n */\n onLoad?: (event: {}) => void;\n\n /**\n * 地图定位更新事件\n */\n onLocation?: (event: Coordinates | ReGeocode) => void;\n\n /**\n * Marker 点击事件\n */\n onMarkerPress?: (event: { markerId: string } & LatLng) => void;\n\n /**\n * Marker 拖拽开始事件\n */\n onMarkerDragStart?: (event: { markerId: string } & LatLng) => void;\n\n /**\n * Marker 拖拽中事件\n */\n onMarkerDrag?: (event: { markerId: string } & LatLng) => void;\n\n /**\n * Marker 拖拽结束事件\n */\n onMarkerDragEnd?: (event: { markerId: string } & LatLng) => void;\n\n /**\n * Circle 点击事件\n */\n onCirclePress?: (event: { circleId: string } & LatLng) => void;\n\n /**\n * Polygon 点击事件\n */\n onPolygonPress?: (event: { polygonId: string } & LatLng) => void;\n\n /**\n * Polyline 点击事件\n */\n onPolylinePress?: (event: { polylineId: string } & LatLng) => void;\n\n /**\n * 子组件\n */\n children?: React.ReactNode;\n}\n\n/**\n * 地图视图方法\n */\nexport interface MapViewMethods {\n /**\n * 移动相机\n * @param cameraPosition 目标相机位置\n * @param duration 动画时长(毫秒)\n */\n moveCamera(cameraPosition: CameraPosition, duration?: number): void;\n\n /**\n * 将屏幕坐标转换为地理坐标\n * @param point 屏幕坐标\n * @returns 地理坐标\n */\n getLatLng(point: Point): Promise<LatLng>;\n}\n\n/**\n * MapView Ref 公开接口(用户使用)\n */\nexport interface MapViewRef {\n moveCamera(position: CameraPosition, duration?: number): Promise<void>;\n getLatLng(point: Point): Promise<LatLng>;\n setCenter(center: LatLng, animated?: boolean): Promise<void>;\n setZoom(zoom: number, animated?: boolean): Promise<void>;\n getCameraPosition(): Promise<CameraPosition>;\n addCircle(id: string, props: import('./overlays.types').CircleProps): Promise<void>;\n removeCircle(id: string): Promise<void>;\n updateCircle(id: string, props: Partial<import('./overlays.types').CircleProps>): Promise<void>;\n addMarker(id: string, props: import('./overlays.types').MarkerProps): Promise<void>;\n removeMarker(id: string): Promise<void>;\n updateMarker(id: string, props: Partial<import('./overlays.types').MarkerProps>): Promise<void>;\n addPolyline(id: string, props: import('./overlays.types').PolylineProps): Promise<void>;\n removePolyline(id: string): Promise<void>;\n updatePolyline(id: string, props: Partial<import('./overlays.types').PolylineProps>): Promise<void>;\n addPolygon(id: string, props: import('./overlays.types').PolygonProps): Promise<void>;\n removePolygon(id: string): Promise<void>;\n updatePolygon(id: string, props: Partial<import('./overlays.types').PolygonProps>): Promise<void>;\n}\n\n/**\n * 原生 MapView Ref 接口(所有参数必需)\n */\nexport interface NativeMapViewRef {\n moveCamera(position: CameraPosition, duration: number): Promise<void>;\n getLatLng(point: Point): Promise<LatLng>;\n setCenter(center: LatLng, animated: boolean): Promise<void>;\n setZoom(zoom: number, animated: boolean): Promise<void>;\n getCameraPosition(): Promise<CameraPosition>;\n addCircle(id: string, props: import('./overlays.types').CircleProps): Promise<void>;\n removeCircle(id: string): Promise<void>;\n updateCircle(id: string, props: Partial<import('./overlays.types').CircleProps>): Promise<void>;\n addMarker(id: string, props: import('./overlays.types').MarkerProps): Promise<void>;\n removeMarker(id: string): Promise<void>;\n updateMarker(id: string, props: Partial<import('./overlays.types').MarkerProps>): Promise<void>;\n addPolyline(id: string, props: import('./overlays.types').PolylineProps): Promise<void>;\n removePolyline(id: string): Promise<void>;\n updatePolyline(id: string, props: Partial<import('./overlays.types').PolylineProps>): Promise<void>;\n addPolygon(id: string, props: import('./overlays.types').PolygonProps): Promise<void>;\n removePolygon(id: string): Promise<void>;\n updatePolygon(id: string, props: Partial<import('./overlays.types').PolygonProps>): Promise<void>;\n}\n"]}
@@ -18,10 +18,12 @@ export interface MarkerProps {
18
18
  icon?: string | ImageSourcePropType;
19
19
  /**
20
20
  * 图标宽度(像素)
21
+ * 仅在使用 icon 属性时有效
21
22
  */
22
23
  iconWidth?: number;
23
24
  /**
24
25
  * 图标高度(像素)
26
+ * 仅在使用 icon 属性时有效
25
27
  */
26
28
  iconHeight?: number;
27
29
  /**
@@ -77,9 +79,21 @@ export interface MarkerProps {
77
79
  pinColor?: 'red' | 'green' | 'purple';
78
80
  /**
79
81
  * 自定义视图
80
- * @note 未实现
82
+ * 当使用 children 时,会将 React Native 组件渲染为图片显示在地图上
81
83
  */
82
84
  children?: React.ReactNode;
85
+ /**
86
+ * 自定义视图宽度(像素)
87
+ * 仅在使用 children 属性时有效
88
+ * @default 80
89
+ */
90
+ customViewWidth?: number;
91
+ /**
92
+ * 自定义视图高度(像素)
93
+ * 仅在使用 children 属性时有效
94
+ * @default 30
95
+ */
96
+ customViewHeight?: number;
83
97
  /**
84
98
  * 点击事件
85
99
  */
@@ -212,6 +226,11 @@ export interface CircleProps {
212
226
  * 点击事件
213
227
  */
214
228
  onPress?: () => void;
229
+ /**
230
+ * 自定义子元素
231
+ * 暂不支持
232
+ */
233
+ children?: React.ReactNode;
215
234
  }
216
235
  /**
217
236
  * 热力图属性
@@ -1 +1 @@
1
- {"version":3,"file":"overlays.types.d.ts","sourceRoot":"","sources":["../../src/types/overlays.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"overlays.types.d.ts","sourceRoot":"","sources":["../../src/types/overlays.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAAC;IAEpC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC;IAEf;;;OAGG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC;IAErB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IAEtC;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IAEzB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACtD;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,MAAM,EAAE,MAAM,EAAE,CAAC;IAEjB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IAEnB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IAEtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,MAAM,EAAE,MAAM,EAAE,CAAC;IAEjB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,WAAW,CAAC,EAAE,UAAU,CAAC;IAEzB;;OAEG;IACH,SAAS,CAAC,EAAE,UAAU,CAAC;IAEvB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,WAAW,CAAC,EAAE,UAAU,CAAC;IAEzB;;OAEG;IACH,SAAS,CAAC,EAAE,UAAU,CAAC;IAEvB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAE5B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,IAAI,EAAE,MAAM,EAAE,CAAC;IAEf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,MAAM;IAC5C;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAErB;;OAEG;IACH,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,KAAK,EAAE,cAAc,EAAE,CAAC;IAExB;;OAEG;IACH,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAE3B;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,WAAW,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,cAAc,CAAA;SAAE,CAAA;KAAE,KAAK,IAAI,CAAC;CACrF;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,UAAU,CAAC,EAAE,GAAG,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB;;OAEG;IACH,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAE7B;;OAEG;IACH,MAAM,EAAE,YAAY,EAAE,CAAC;IAEvB;;OAEG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,KAAK,CAAC,SAAS,CAAC;IAEtD;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,KAAK,CAAC,SAAS,CAAC;IAE3D;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;CAC3C"}
@@ -1 +1 @@
1
- {"version":3,"file":"overlays.types.js","sourceRoot":"","sources":["../../src/types/overlays.types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * 高德地图覆盖物相关类型定义\n * 基于 Expo Modules API\n */\n\nimport type { ImageSourcePropType, ViewStyle } from 'react-native';\nimport type { ColorValue, LatLng, Point } from './common.types';\n\n/**\n * 标记点属性\n */\nexport interface MarkerProps {\n /**\n * 坐标\n */\n position: LatLng;\n\n /**\n * 图标\n */\n icon?: string | ImageSourcePropType;\n\n /**\n * 图标宽度(像素)\n */\n iconWidth?: number;\n\n /**\n * 图标高度(像素)\n */\n iconHeight?: number;\n\n /**\n * 标题\n */\n title?: string;\n\n /**\n * 描述\n */\n snippet?: string;\n\n /**\n * 透明度 [0, 1]\n * @platform android\n * @note iOS 不支持\n */\n opacity?: number;\n\n /**\n * 是否可拖拽\n */\n draggable?: boolean;\n\n /**\n * 是否平贴地图\n * @platform android\n * @note iOS 不支持\n */\n flat?: boolean;\n\n /**\n * 层级\n * @platform android\n * @note iOS 不支持 (使用 displayPriority)\n */\n zIndex?: number;\n\n /**\n * 覆盖物锚点比例\n * @platform android\n * @note iOS 使用 centerOffset\n */\n anchor?: Point;\n\n /**\n * 覆盖物偏移位置\n * @platform ios\n */\n centerOffset?: Point;\n\n /**\n * 是否显示动画\n * @platform ios\n */\n animatesDrop?: boolean;\n\n /**\n * 大头针颜色\n * @platform ios\n */\n pinColor?: 'red' | 'green' | 'purple';\n\n /**\n * 自定义视图\n * @note 未实现\n */\n children?: React.ReactNode;\n\n /**\n * 点击事件\n */\n onPress?: () => void;\n\n /**\n * 拖拽开始事件\n */\n onDragStart?: () => void;\n\n /**\n * 拖拽中事件\n */\n onDrag?: () => void;\n\n /**\n * 拖拽结束事件\n */\n onDragEnd?: (event: { nativeEvent: LatLng }) => void;\n}\n\n/**\n * 折线属性\n */\nexport interface PolylineProps {\n /**\n * 节点坐标数组\n */\n points: LatLng[];\n\n /**\n * 线宽\n */\n width?: number;\n\n /**\n * 线条颜色\n */\n color?: ColorValue;\n\n /**\n * 层级\n */\n zIndex?: number;\n\n /**\n * 分段颜色\n */\n colors?: ColorValue[];\n\n /**\n * 是否使用渐变色\n * @platform android\n * @note iOS 不支持\n */\n gradient?: boolean;\n\n /**\n * 是否绘制大地线\n * @platform android\n * @note iOS 不支持\n */\n geodesic?: boolean;\n\n /**\n * 是否绘制虚线\n * @platform android\n * @note iOS 不支持\n */\n dotted?: boolean;\n\n /**\n * 纹理图片\n * 支持网络图片(http/https)、本地文件(file://)或资源名称\n */\n texture?: string;\n\n /**\n * 点击事件\n */\n onPress?: () => void;\n}\n\n/**\n * 多边形属性\n */\nexport interface PolygonProps {\n /**\n * 节点坐标数组\n */\n points: LatLng[];\n\n /**\n * 边线宽度\n */\n strokeWidth?: number;\n\n /**\n * 边线颜色\n */\n strokeColor?: ColorValue;\n\n /**\n * 填充颜色\n */\n fillColor?: ColorValue;\n\n /**\n * 层级\n */\n zIndex?: number;\n\n /**\n * 点击事件\n */\n onPress?: () => void;\n}\n\n/**\n * 圆形属性\n */\nexport interface CircleProps {\n /**\n * 圆心坐标\n */\n center: LatLng;\n\n /**\n * 半径(米)\n */\n radius: number;\n\n /**\n * 边线宽度\n */\n strokeWidth?: number;\n\n /**\n * 边线颜色\n */\n strokeColor?: ColorValue;\n\n /**\n * 填充颜色\n */\n fillColor?: ColorValue;\n\n /**\n * 层级\n */\n zIndex?: number;\n\n /**\n * 点击事件\n */\n onPress?: () => void;\n\n}\n\n/**\n * 热力图属性\n */\nexport interface HeatMapProps {\n /**\n * 热力点数据\n */\n data: LatLng[];\n\n /**\n * 热力半径(米)\n */\n radius?: number;\n\n /**\n * 透明度 [0, 1]\n */\n opacity?: number;\n}\n\n/**\n * 海量点标记项\n */\nexport interface MultiPointItem extends LatLng {\n /**\n * 唯一标识\n */\n id?: string | number;\n\n /**\n * 自定义数据\n */\n data?: any;\n}\n\n/**\n * 海量点属性\n */\nexport interface MultiPointProps {\n /**\n * 点集合\n */\n items: MultiPointItem[];\n\n /**\n * 图标\n */\n icon?: ImageSourcePropType;\n\n /**\n * 点击事件\n */\n onPress?: (event: { nativeEvent: { index: number; item: MultiPointItem } }) => void;\n}\n\n/**\n * 聚合点参数\n */\nexport interface ClusterParams {\n /**\n * 唯一标识\n */\n id: number;\n\n /**\n * 包含的标记点数量\n */\n count: number;\n\n /**\n * 聚合点坐标\n */\n position: LatLng;\n}\n\n/**\n * 聚合点项\n */\nexport interface ClusterPoint {\n /**\n * 坐标\n */\n position: LatLng;\n\n /**\n * 自定义数据\n */\n properties?: any;\n}\n\n/**\n * 聚合图层属性\n */\nexport interface ClusterProps {\n /**\n * 聚合半径\n */\n radius?: number;\n\n /**\n * 聚合点样式\n */\n clusterStyle?: ViewStyle;\n\n /**\n * 聚合点文本样式\n */\n clusterTextStyle?: ViewStyle;\n\n /**\n * 坐标点列表\n */\n points: ClusterPoint[];\n\n /**\n * 渲染标记点\n */\n renderMarker: (item: ClusterPoint) => React.ReactNode;\n\n /**\n * 渲染聚合点\n */\n renderCluster?: (params: ClusterParams) => React.ReactNode;\n\n /**\n * 聚合点点击事件\n */\n onPress?: (params: ClusterParams) => void;\n}\n"]}
1
+ {"version":3,"file":"overlays.types.js","sourceRoot":"","sources":["../../src/types/overlays.types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * 高德地图覆盖物相关类型定义\n * 基于 Expo Modules API\n */\n\nimport type { ImageSourcePropType, ViewStyle } from 'react-native';\nimport type { ColorValue, LatLng, Point } from './common.types';\n\n/**\n * 标记点属性\n */\nexport interface MarkerProps {\n /**\n * 坐标\n */\n position: LatLng;\n\n /**\n * 图标\n */\n icon?: string | ImageSourcePropType;\n\n /**\n * 图标宽度(像素)\n * 仅在使用 icon 属性时有效\n */\n iconWidth?: number;\n\n /**\n * 图标高度(像素)\n * 仅在使用 icon 属性时有效\n */\n iconHeight?: number;\n\n /**\n * 标题\n */\n title?: string;\n\n /**\n * 描述\n */\n snippet?: string;\n\n /**\n * 透明度 [0, 1]\n * @platform android\n * @note iOS 不支持\n */\n opacity?: number;\n\n /**\n * 是否可拖拽\n */\n draggable?: boolean;\n\n /**\n * 是否平贴地图\n * @platform android\n * @note iOS 不支持\n */\n flat?: boolean;\n\n /**\n * 层级\n * @platform android\n * @note iOS 不支持 (使用 displayPriority)\n */\n zIndex?: number;\n\n /**\n * 覆盖物锚点比例\n * @platform android\n * @note iOS 使用 centerOffset\n */\n anchor?: Point;\n\n /**\n * 覆盖物偏移位置\n * @platform ios\n */\n centerOffset?: Point;\n\n /**\n * 是否显示动画\n * @platform ios\n */\n animatesDrop?: boolean;\n\n /**\n * 大头针颜色\n * @platform ios\n */\n pinColor?: 'red' | 'green' | 'purple';\n\n /**\n * 自定义视图\n * 当使用 children 时,会将 React Native 组件渲染为图片显示在地图上\n */\n children?: React.ReactNode;\n\n /**\n * 自定义视图宽度(像素)\n * 仅在使用 children 属性时有效 \n * @default 80\n */\n customViewWidth?: number;\n\n /**\n * 自定义视图高度(像素)\n * 仅在使用 children 属性时有效\n * @default 30\n */\n customViewHeight?: number;\n\n /**\n * 点击事件\n */\n onPress?: () => void;\n\n /**\n * 拖拽开始事件\n */\n onDragStart?: () => void;\n\n /**\n * 拖拽中事件\n */\n onDrag?: () => void;\n\n /**\n * 拖拽结束事件\n */\n onDragEnd?: (event: { nativeEvent: LatLng }) => void;\n}\n\n/**\n * 折线属性\n */\nexport interface PolylineProps {\n /**\n * 节点坐标数组\n */\n points: LatLng[];\n\n /**\n * 线宽\n */\n width?: number;\n\n /**\n * 线条颜色\n */\n color?: ColorValue;\n\n /**\n * 层级\n */\n zIndex?: number;\n\n /**\n * 分段颜色\n */\n colors?: ColorValue[];\n\n /**\n * 是否使用渐变色\n * @platform android\n * @note iOS 不支持\n */\n gradient?: boolean;\n\n /**\n * 是否绘制大地线\n * @platform android\n * @note iOS 不支持\n */\n geodesic?: boolean;\n\n /**\n * 是否绘制虚线\n * @platform android\n * @note iOS 不支持\n */\n dotted?: boolean;\n\n /**\n * 纹理图片\n * 支持网络图片(http/https)、本地文件(file://)或资源名称\n */\n texture?: string;\n\n /**\n * 点击事件\n */\n onPress?: () => void;\n}\n\n/**\n * 多边形属性\n */\nexport interface PolygonProps {\n /**\n * 节点坐标数组\n */\n points: LatLng[];\n\n /**\n * 边线宽度\n */\n strokeWidth?: number;\n\n /**\n * 边线颜色\n */\n strokeColor?: ColorValue;\n\n /**\n * 填充颜色\n */\n fillColor?: ColorValue;\n\n /**\n * 层级\n */\n zIndex?: number;\n\n /**\n * 点击事件\n */\n onPress?: () => void;\n}\n\n/**\n * 圆形属性\n */\nexport interface CircleProps {\n /**\n * 圆心坐标\n */\n center: LatLng;\n\n /**\n * 半径(米)\n */\n radius: number;\n\n /**\n * 边线宽度\n */\n strokeWidth?: number;\n\n /**\n * 边线颜色\n */\n strokeColor?: ColorValue;\n\n /**\n * 填充颜色\n */\n fillColor?: ColorValue;\n\n /**\n * 层级\n */\n zIndex?: number;\n\n /**\n * 点击事件\n */\n onPress?: () => void;\n\n /**\n * 自定义子元素\n * 暂不支持\n */\n children?: React.ReactNode;\n\n}\n\n/**\n * 热力图属性\n */\nexport interface HeatMapProps {\n /**\n * 热力点数据\n */\n data: LatLng[];\n\n /**\n * 热力半径(米)\n */\n radius?: number;\n\n /**\n * 透明度 [0, 1]\n */\n opacity?: number;\n}\n\n/**\n * 海量点标记项\n */\nexport interface MultiPointItem extends LatLng {\n /**\n * 唯一标识\n */\n id?: string | number;\n\n /**\n * 自定义数据\n */\n data?: any;\n}\n\n/**\n * 海量点属性\n */\nexport interface MultiPointProps {\n /**\n * 点集合\n */\n items: MultiPointItem[];\n\n /**\n * 图标\n */\n icon?: ImageSourcePropType;\n\n /**\n * 点击事件\n */\n onPress?: (event: { nativeEvent: { index: number; item: MultiPointItem } }) => void;\n}\n\n/**\n * 聚合点参数\n */\nexport interface ClusterParams {\n /**\n * 唯一标识\n */\n id: number;\n\n /**\n * 包含的标记点数量\n */\n count: number;\n\n /**\n * 聚合点坐标\n */\n position: LatLng;\n}\n\n/**\n * 聚合点项\n */\nexport interface ClusterPoint {\n /**\n * 坐标\n */\n position: LatLng;\n\n /**\n * 自定义数据\n */\n properties?: any;\n}\n\n/**\n * 聚合图层属性\n */\nexport interface ClusterProps {\n /**\n * 聚合半径\n */\n radius?: number;\n\n /**\n * 聚合点样式\n */\n clusterStyle?: ViewStyle;\n\n /**\n * 聚合点文本样式\n */\n clusterTextStyle?: ViewStyle;\n\n /**\n * 坐标点列表\n */\n points: ClusterPoint[];\n\n /**\n * 渲染标记点\n */\n renderMarker: (item: ClusterPoint) => React.ReactNode;\n\n /**\n * 渲染聚合点\n */\n renderCluster?: (params: ClusterParams) => React.ReactNode;\n\n /**\n * 聚合点点击事件\n */\n onPress?: (params: ClusterParams) => void;\n}\n"]}
package/docs/API.en.md CHANGED
@@ -326,8 +326,10 @@ Based on AMap official recommendations, this library uses the following default
326
326
  | `snippet` | `string` | All | - | Description |
327
327
  | `draggable` | `boolean` | All | `false` | Draggable |
328
328
  | `icon` | `string \| ImageSourcePropType` | All | - | Custom icon |
329
- | `iconWidth` | `number` | All | `40` | Icon width (pt/dp) |
330
- | `iconHeight` | `number` | All | `40` | Icon height (pt/dp) |
329
+ | `iconWidth` | `number` | All | `40` | Icon width (pt/dp), only for `icon` property |
330
+ | `iconHeight` | `number` | All | `40` | Icon height (pt/dp), only for `icon` property |
331
+ | `customViewWidth` | `number` | All | `80` | Custom view width (pt/dp), only for `children` property |
332
+ | `customViewHeight` | `number` | All | `30` | Custom view height (pt/dp), only for `children` property |
331
333
  | `opacity` | `number` | Android only | `1.0` | Opacity [0, 1] |
332
334
  | `flat` | `boolean` | Android only | `false` | Flat on map |
333
335
  | `zIndex` | `number` | Android only | `0` | Z-index |
@@ -347,12 +349,20 @@ Based on AMap official recommendations, this library uses the following default
347
349
 
348
350
  > **⚠️ Important**: Event callbacks only work in **declarative usage**. Markers added via imperative API (`addMarker`) cannot trigger these events.
349
351
 
350
- #### Icon Notes
352
+ #### Usage Notes
351
353
 
354
+ **Custom Icon (icon property):**
352
355
  - **Icon Format**: Supports network images (http/https), local files (use `Image.resolveAssetSource()`)
353
- - **Size Unit**: `iconWidth` and `iconHeight` use points, auto-scale on different density screens
356
+ - **Size Control**: Use `iconWidth` and `iconHeight` to control icon size
357
+ - **Size Unit**: Uses points (pt/dp), auto-scales on different density screens
354
358
  - **Anchor**: `anchor` defines icon position relative to coordinate, `{x: 0.5, y: 1.0}` means bottom-center aligned
355
359
 
360
+ **Custom View (children property):**
361
+ - **Size Control**: Use `customViewWidth` and `customViewHeight` to control custom view size
362
+ - **Default Size**: 80x30 pt/dp
363
+ - **Important**: `iconWidth/iconHeight` only apply to `icon` property, not `children`
364
+ - Recommend explicitly setting size to ensure consistent display across devices
365
+
356
366
  ## Type Definitions
357
367
 
358
368
  ### MapType
package/docs/API.md CHANGED
@@ -326,8 +326,11 @@ configure({
326
326
  | `snippet` | `string` | 全平台 | - | 描述信息 |
327
327
  | `draggable` | `boolean` | 全平台 | `false` | 是否可拖拽 |
328
328
  | `icon` | `string \| ImageSourcePropType` | 全平台 | - | 自定义图标 |
329
- | `iconWidth` | `number` | 全平台 | `40` | 图标宽度(点/dp |
330
- | `iconHeight` | `number` | 全平台 | `40` | 图标高度(点/dp |
329
+ | `iconWidth` | `number` | 全平台 | `40` | 图标宽度(点/dp),仅在使用 `icon` 时有效 |
330
+ | `iconHeight` | `number` | 全平台 | `40` | 图标高度(点/dp),仅在使用 `icon` 时有效 |
331
+ | `children` | `React.ReactNode` | 全平台 | - | 自定义视图内容 |
332
+ | `customViewWidth` | `number` | 全平台 | `80` | 自定义视图宽度(点/dp),仅在使用 `children` 时有效 |
333
+ | `customViewHeight` | `number` | 全平台 | `30` | 自定义视图高度(点/dp),仅在使用 `children` 时有效 |
331
334
  | `opacity` | `number` | 仅 Android | `1.0` | 透明度 [0, 1] |
332
335
  | `flat` | `boolean` | 仅 Android | `false` | 是否平贴地图 |
333
336
  | `zIndex` | `number` | 仅 Android | `0` | 层级 |
@@ -347,12 +350,57 @@ configure({
347
350
 
348
351
  > **⚠️ 重要提示**:事件回调仅在**声明式用法**中有效。使用命令式 API(`addMarker`)添加的标记点无法触发这些事件。
349
352
 
350
- #### 图标说明
353
+ #### 使用方式
351
354
 
355
+ ##### 1. 默认大头针
356
+ 不传递任何图标属性,显示默认的红色大头针(iOS)或默认标记(Android)。
357
+
358
+ ##### 2. 自定义图标
359
+ 通过 `icon` 属性指定图标图片:
360
+
361
+ ```tsx
362
+ <Marker
363
+ position={{ latitude: 39.9, longitude: 116.4 }}
364
+ icon={require('./assets/custom-icon.png')}
365
+ iconWidth={40}
366
+ iconHeight={60}
367
+ title="自定义图标"
368
+ />
369
+ ```
370
+
371
+ **自定义图标特点:**
352
372
  - **图标格式**:支持网络图片(http/https)、本地文件(使用 `Image.resolveAssetSource()`)
353
- - **尺寸单位**:`iconWidth` 和 `iconHeight` 使用点(points)作为单位,在不同密度屏幕上会自动缩放
373
+ - **尺寸控制**:使用 `iconWidth` 和 `iconHeight` 设置图标显示尺寸(点/dp)
354
374
  - **锚点**:`anchor` 定义图标相对于坐标点的位置,`{x: 0.5, y: 1.0}` 表示图标底部中心对齐坐标点
355
375
 
376
+ ##### 3. 自定义视图(children)⭐ 推荐
377
+ 通过 `children` 属性传递自定义 React Native 组件,可以实现完全自定义的标记外观:
378
+
379
+ ```tsx
380
+ <Marker
381
+ position={{ latitude: 39.9, longitude: 116.4 }}
382
+ customViewWidth={200}
383
+ customViewHeight={50}
384
+ >
385
+ <View style={styles.markerContainer}>
386
+ <Text style={styles.markerText}>自定义内容</Text>
387
+ </View>
388
+ </Marker>
389
+ ```
390
+
391
+ **自定义视图特点:**
392
+ - ✅ 支持任意 React Native 组件(View、Text、Image 等)
393
+ - ✅ 完全支持样式(backgroundColor、borderRadius、padding、flexbox 等)
394
+ - ✅ 使用 `customViewWidth` 和 `customViewHeight` 控制最终渲染尺寸(默认 80x30)
395
+ - ✅ 自动将 React 组件转换为图片显示在地图上
396
+ - ⚠️ **仅支持声明式用法**(`<Marker>` 组件),不支持命令式 API(`addMarker`)
397
+
398
+ **尺寸说明:**
399
+ - `customViewWidth` 和 `customViewHeight` 定义最终在地图上显示的尺寸
400
+ - 子视图会被强制调整为该尺寸并渲染为图片
401
+ - 建议明确指定尺寸以确保在不同设备上显示一致
402
+ - **注意**:`iconWidth` 和 `iconHeight` 仅用于自定义图标(`icon` 属性),不影响 `children`
403
+
356
404
  ## 类型定义
357
405
 
358
406
  ### MapType