expo-gaode-map 2.2.4-next.1 → 2.2.5-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/components/MapPreloader.d.ts +1 -17
- package/build/components/MapPreloader.d.ts.map +1 -1
- package/build/components/MapPreloader.js +1 -1
- package/build/components/MapPreloader.js.map +1 -1
- package/build/hooks/useLocation.d.ts +3 -0
- package/build/hooks/useLocation.d.ts.map +1 -0
- package/build/hooks/useLocation.js +73 -0
- package/build/hooks/useLocation.js.map +1 -0
- package/build/hooks/useMapPreload.d.ts +1 -29
- package/build/hooks/useMapPreload.d.ts.map +1 -1
- package/build/hooks/useMapPreload.js.map +1 -1
- package/build/index.d.ts +3 -3
- package/build/index.d.ts.map +1 -1
- package/build/index.js +2 -0
- package/build/index.js.map +1 -1
- package/build/types/index.d.ts +2 -1
- package/build/types/index.d.ts.map +1 -1
- package/build/types/index.js.map +1 -1
- package/build/types/location.types.d.ts +20 -0
- package/build/types/location.types.d.ts.map +1 -1
- package/build/types/location.types.js.map +1 -1
- package/build/types/map-view.types.d.ts.map +1 -1
- package/build/types/map-view.types.js.map +1 -1
- package/build/types/preload.types.d.ts +83 -0
- package/build/types/preload.types.d.ts.map +1 -0
- package/build/types/preload.types.js +2 -0
- package/build/types/preload.types.js.map +1 -0
- package/build/utils/MapPreloader.d.ts +1 -29
- package/build/utils/MapPreloader.d.ts.map +1 -1
- package/build/utils/MapPreloader.js.map +1 -1
- package/ios/ExpoGaodeMapModule.swift +27 -42
- package/ios/modules/LocationManager.swift +156 -176
- package/package.json +1 -1
|
@@ -3,23 +3,7 @@
|
|
|
3
3
|
* 在后台渲染隐藏的地图视图以实现预加载
|
|
4
4
|
*/
|
|
5
5
|
import React from 'react';
|
|
6
|
-
import {
|
|
7
|
-
import type { MapViewProps } from '../types';
|
|
8
|
-
/**
|
|
9
|
-
* 预加载组件属性
|
|
10
|
-
*/
|
|
11
|
-
export interface MapPreloaderProps {
|
|
12
|
-
/** 预加载配置 */
|
|
13
|
-
config?: PreloadConfig;
|
|
14
|
-
/** 预加载的地图视图属性 */
|
|
15
|
-
mapProps?: Partial<MapViewProps>;
|
|
16
|
-
/** 是否启用预加载,默认为 true */
|
|
17
|
-
enabled?: boolean;
|
|
18
|
-
/** 预加载完成回调 */
|
|
19
|
-
onPreloadComplete?: () => void;
|
|
20
|
-
/** 预加载失败回调 */
|
|
21
|
-
onPreloadError?: (error: Error) => void;
|
|
22
|
-
}
|
|
6
|
+
import { MapPreloaderProps } from '../types';
|
|
23
7
|
/**
|
|
24
8
|
* 地图预加载组件
|
|
25
9
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapPreloader.d.ts","sourceRoot":"","sources":["../../src/components/MapPreloader.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAA4B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"MapPreloader.d.ts","sourceRoot":"","sources":["../../src/components/MapPreloader.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAA4B,MAAM,OAAO,CAAC;AAIjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAK7C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA6E7D,CAAC;AAwBF,eAAe,qBAAqB,CAAC"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import React, { useEffect, useRef } from 'react';
|
|
6
6
|
import { View, StyleSheet } from 'react-native';
|
|
7
7
|
import ExpoGaodeMapView from '../ExpoGaodeMapView';
|
|
8
|
-
import { MapPreloader } from '../utils/MapPreloader';
|
|
8
|
+
import { MapPreloader, } from '../utils/MapPreloader';
|
|
9
9
|
/**
|
|
10
10
|
* 地图预加载组件
|
|
11
11
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapPreloader.js","sourceRoot":"","sources":["../../src/components/MapPreloader.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"MapPreloader.js","sourceRoot":"","sources":["../../src/components/MapPreloader.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * 地图预加载组件\n * 在后台渲染隐藏的地图视图以实现预加载\n */\n\nimport React, { useEffect, useRef } from 'react';\nimport { View, StyleSheet } from 'react-native';\nimport ExpoGaodeMapView from '../ExpoGaodeMapView';\nimport { MapPreloader, } from '../utils/MapPreloader';\nimport { MapPreloaderProps } from '../types';\n\n\n\n\n/**\n * 地图预加载组件\n * \n * 在应用启动时渲染隐藏的地图视图,提前初始化地图引擎,\n * 当用户真正需要显示地图时可以获得更快的加载速度\n * \n * @example\n * ```tsx\n * // 在 App 根组件中使用\n * function App() {\n * return (\n * <>\n * <MapPreloader\n * config={{ poolSize: 1, delay: 2000 }}\n * onPreloadComplete={() => console.log('地图预加载完成')}\n * />\n * <YourAppContent />\n * </>\n * );\n * }\n * ```\n */\nexport const MapPreloaderComponent: React.FC<MapPreloaderProps> = ({\n config,\n mapProps = {},\n enabled = true,\n onPreloadComplete,\n onPreloadError,\n}) => {\n const hasInitialized = useRef(false);\n\n\n useEffect(() => {\n if (!enabled || hasInitialized.current) {\n return;\n }\n\n hasInitialized.current = true;\n\n // 配置预加载\n if (config) {\n MapPreloader.configure(config);\n }\n\n // 启动预加载,并处理可能的错误\n const startPreloadAsync = async () => {\n try {\n MapPreloader.startPreload();\n } catch (error) {\n console.error(\"地图预加载失败\", error);\n onPreloadError?.(error as Error);\n }\n };\n\n startPreloadAsync();\n\n // 监听预加载状态\n // 监听预加载状态\n const unsubscribe = MapPreloader.addListener((status) => {\n if (status === 'ready') {\n onPreloadComplete?.();\n } else if (status === 'error') {\n onPreloadError?.(new Error('地图预加载失败'));\n }\n });\n\n\n // 启动预加载\n // MapPreloader.startPreload();\n\n return () => {\n unsubscribe();\n // 组件卸载时不清理预加载实例,因为它们可能被其他地方使用\n };\n }, [config, enabled, onPreloadComplete, onPreloadError]);\n\n // 如果未启用,不渲染任何内容\n if (!enabled) {\n return null;\n }\n\n const poolSize = config?.poolSize || 1;\n\n return (\n <View style={styles.container} pointerEvents=\"none\">\n {Array.from({ length: poolSize }).map((_, index) => (\n <View key={`preload-${index}`} style={styles.hiddenMap}>\n <ExpoGaodeMapView\n style={styles.mapView}\n initialCameraPosition={{\n target: { latitude: 39.9042, longitude: 116.4074 },\n zoom: 10,\n }}\n {...mapProps}\n />\n </View>\n ))}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n position: 'absolute',\n left: -10000,\n top: -10000,\n width: 1,\n height: 1,\n overflow: 'hidden',\n opacity: 0,\n },\n hiddenMap: {\n width: 1,\n height: 1,\n },\n mapView: {\n width: 1,\n height: 1,\n },\n});\n\nMapPreloaderComponent.displayName = 'MapPreloader';\n\nexport default MapPreloaderComponent;"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLocation.d.ts","sourceRoot":"","sources":["../../src/hooks/useLocation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAyB,kBAAkB,EAAC,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAG5F,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,iBAAiB,CAoE/E"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// useLocation.ts
|
|
2
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
3
|
+
import ExpoGaodeMapModule from '../ExpoGaodeMapModule';
|
|
4
|
+
export function useLocation(options = {}) {
|
|
5
|
+
const { autoStart = false, autoGet = false } = options;
|
|
6
|
+
const [location, setLocation] = useState(null);
|
|
7
|
+
const [isStarted, setIsStarted] = useState(false);
|
|
8
|
+
const [timestamp, setTimestamp] = useState(null);
|
|
9
|
+
const listenerRef = useRef(null);
|
|
10
|
+
// ⭐ 连续定位:订阅原生 listener
|
|
11
|
+
const start = useCallback(() => {
|
|
12
|
+
ExpoGaodeMapModule.start();
|
|
13
|
+
setIsStarted(true);
|
|
14
|
+
// 避免重复注册 listener
|
|
15
|
+
if (!listenerRef.current) {
|
|
16
|
+
listenerRef.current = ExpoGaodeMapModule.addLocationListener((loc) => {
|
|
17
|
+
setLocation(loc);
|
|
18
|
+
setTimestamp(Date.now());
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
}, []);
|
|
22
|
+
// ⭐ 停止连续定位
|
|
23
|
+
const stop = useCallback(() => {
|
|
24
|
+
ExpoGaodeMapModule.stop();
|
|
25
|
+
setIsStarted(false);
|
|
26
|
+
listenerRef.current?.remove();
|
|
27
|
+
listenerRef.current = null;
|
|
28
|
+
}, []);
|
|
29
|
+
// ⭐ 一次定位(自动处理连续定位冲突)
|
|
30
|
+
const get = useCallback(async () => {
|
|
31
|
+
// 如果连续定位运行中 → 直接返回最新位置(高德 iOS 官方行为)
|
|
32
|
+
if (isStarted && location) {
|
|
33
|
+
return location;
|
|
34
|
+
}
|
|
35
|
+
// 否则执行一次定位
|
|
36
|
+
const loc = await ExpoGaodeMapModule.getCurrentLocation();
|
|
37
|
+
setLocation(loc);
|
|
38
|
+
setTimestamp(Date.now());
|
|
39
|
+
return loc;
|
|
40
|
+
}, [isStarted, location]);
|
|
41
|
+
// 自动触发连续定位
|
|
42
|
+
useEffect(() => {
|
|
43
|
+
if (autoStart)
|
|
44
|
+
start();
|
|
45
|
+
return () => {
|
|
46
|
+
stop();
|
|
47
|
+
};
|
|
48
|
+
}, [autoStart, start, stop]);
|
|
49
|
+
// 自动获取一次定位
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
if (autoGet)
|
|
52
|
+
get();
|
|
53
|
+
}, [autoGet, get]);
|
|
54
|
+
return {
|
|
55
|
+
location,
|
|
56
|
+
isStarted,
|
|
57
|
+
start,
|
|
58
|
+
stop,
|
|
59
|
+
get,
|
|
60
|
+
timestamp,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
//🌟 自动连续定位 + 实时位置
|
|
64
|
+
//const { location, isStarted } = useLocation({ autoStart: true });
|
|
65
|
+
//🌟 页面进入获取一次当前位置(自动)
|
|
66
|
+
//const { location, get } = useLocation({ autoGet: true });
|
|
67
|
+
//🌟 按钮点击定位(不会受连续定位影响)
|
|
68
|
+
// const { get } = useLocation();
|
|
69
|
+
// const handlePress = async () => {
|
|
70
|
+
// const loc = await get();
|
|
71
|
+
// console.log("按钮定位:", loc);
|
|
72
|
+
// };
|
|
73
|
+
//# sourceMappingURL=useLocation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLocation.js","sourceRoot":"","sources":["../../src/hooks/useLocation.ts"],"names":[],"mappings":"AACA,iBAAiB;AACjB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,kBAAkB,MAAM,uBAAuB,CAAC;AAIvD,MAAM,UAAU,WAAW,CAAC,UAA8B,EAAE;IAC1D,MAAM,EAAE,SAAS,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAEvD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAiC,IAAI,CAAC,CAAC;IAC/E,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAEhE,MAAM,WAAW,GAAG,MAAM,CAAgC,IAAI,CAAC,CAAC;IAEhE,uBAAuB;IACvB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAC3B,YAAY,CAAC,IAAI,CAAC,CAAC;QAEnB,kBAAkB;QAClB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACzB,WAAW,CAAC,OAAO,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,CAAC,GAAG,EAAE,EAAE;gBACnE,WAAW,CAAC,GAAG,CAAC,CAAC;gBACjB,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,WAAW;IACX,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5B,kBAAkB,CAAC,IAAI,EAAE,CAAC;QAC1B,YAAY,CAAC,KAAK,CAAC,CAAC;QAEpB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAC9B,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;IAC7B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,qBAAqB;IACrB,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACjC,oCAAoC;QACpC,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;YAC1B,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,WAAW;QACX,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,kBAAkB,EAAE,CAAC;QAC1D,WAAW,CAAC,GAAG,CAAC,CAAC;QACjB,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACzB,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE1B,WAAW;IACX,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS;YAAE,KAAK,EAAE,CAAC;QAEvB,OAAO,GAAG,EAAE;YACV,IAAI,EAAE,CAAC;QACT,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAE7B,WAAW;IACX,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO;YAAE,GAAG,EAAE,CAAC;IACrB,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAEnB,OAAO;QACL,QAAQ;QACR,SAAS;QACT,KAAK;QACL,IAAI;QACJ,GAAG;QACH,SAAS;KACV,CAAC;AACJ,CAAC;AAED,kBAAkB;AAClB,mEAAmE;AAEnE,qBAAqB;AACrB,2DAA2D;AAE3D,sBAAsB;AACtB,iCAAiC;AACjC,oCAAoC;AACpC,6BAA6B;AAC7B,+BAA+B;AAC/B,KAAK","sourcesContent":["\n// useLocation.ts\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport ExpoGaodeMapModule from '../ExpoGaodeMapModule';\nimport type { Coordinates, ReGeocode,UseLocationOptions,UseLocationResult } from '../types';\n\n\nexport function useLocation(options: UseLocationOptions = {}): UseLocationResult {\n const { autoStart = false, autoGet = false } = options;\n\n const [location, setLocation] = useState<Coordinates | ReGeocode | null>(null);\n const [isStarted, setIsStarted] = useState(false);\n const [timestamp, setTimestamp] = useState<number | null>(null);\n\n const listenerRef = useRef<{ remove: () => void } | null>(null);\n\n // ⭐ 连续定位:订阅原生 listener\n const start = useCallback(() => {\n ExpoGaodeMapModule.start();\n setIsStarted(true);\n\n // 避免重复注册 listener\n if (!listenerRef.current) {\n listenerRef.current = ExpoGaodeMapModule.addLocationListener((loc) => {\n setLocation(loc);\n setTimestamp(Date.now());\n });\n }\n }, []);\n\n // ⭐ 停止连续定位\n const stop = useCallback(() => {\n ExpoGaodeMapModule.stop();\n setIsStarted(false);\n\n listenerRef.current?.remove();\n listenerRef.current = null;\n }, []);\n\n // ⭐ 一次定位(自动处理连续定位冲突)\n const get = useCallback(async () => {\n // 如果连续定位运行中 → 直接返回最新位置(高德 iOS 官方行为)\n if (isStarted && location) {\n return location;\n }\n\n // 否则执行一次定位\n const loc = await ExpoGaodeMapModule.getCurrentLocation();\n setLocation(loc);\n setTimestamp(Date.now());\n return loc;\n }, [isStarted, location]);\n\n // 自动触发连续定位\n useEffect(() => {\n if (autoStart) start();\n\n return () => {\n stop();\n };\n }, [autoStart, start, stop]);\n\n // 自动获取一次定位\n useEffect(() => {\n if (autoGet) get();\n }, [autoGet, get]);\n\n return {\n location,\n isStarted,\n start,\n stop,\n get,\n timestamp,\n };\n}\n\n//🌟 自动连续定位 + 实时位置\n//const { location, isStarted } = useLocation({ autoStart: true });\n\n//🌟 页面进入获取一次当前位置(自动)\n//const { location, get } = useLocation({ autoGet: true });\n\n//🌟 按钮点击定位(不会受连续定位影响)\n// const { get } = useLocation();\n// const handlePress = async () => {\n// const loc = await get();\n// console.log(\"按钮定位:\", loc);\n// };"]}
|
|
@@ -2,35 +2,7 @@
|
|
|
2
2
|
* 地图预加载 Hook
|
|
3
3
|
* 提供便捷的 React Hook 来管理地图预加载
|
|
4
4
|
*/
|
|
5
|
-
import { PreloadConfig,
|
|
6
|
-
/**
|
|
7
|
-
* Hook 返回值
|
|
8
|
-
*/
|
|
9
|
-
export interface UseMapPreloadReturn {
|
|
10
|
-
/** 当前预加载状态 */
|
|
11
|
-
status: PreloadStatus;
|
|
12
|
-
/** 是否正在预加载 */
|
|
13
|
-
isLoading: boolean;
|
|
14
|
-
/** 是否已准备就绪 */
|
|
15
|
-
isReady: boolean;
|
|
16
|
-
/** 是否发生错误 */
|
|
17
|
-
hasError: boolean;
|
|
18
|
-
/** 预加载统计信息 */
|
|
19
|
-
stats: {
|
|
20
|
-
total: number;
|
|
21
|
-
ready: number;
|
|
22
|
-
loading: number;
|
|
23
|
-
error: number;
|
|
24
|
-
};
|
|
25
|
-
/** 手动开始预加载 */
|
|
26
|
-
startPreload: () => void;
|
|
27
|
-
/** 停止预加载 */
|
|
28
|
-
stopPreload: () => void;
|
|
29
|
-
/** 清理预加载实例 */
|
|
30
|
-
clearInstances: () => void;
|
|
31
|
-
/** 获取一个预加载实例 */
|
|
32
|
-
getPreloadedInstance: () => string | null;
|
|
33
|
-
}
|
|
5
|
+
import { PreloadConfig, UseMapPreloadReturn } from '../types/preload.types';
|
|
34
6
|
/**
|
|
35
7
|
* 地图预加载 Hook
|
|
36
8
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMapPreload.d.ts","sourceRoot":"","sources":["../../src/hooks/useMapPreload.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"useMapPreload.d.ts","sourceRoot":"","sources":["../../src/hooks/useMapPreload.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,aAAa,EAAgB,mBAAmB,EAAC,MAAM,wBAAwB,CAAC;AAGzF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,aAAa,CAC3B,MAAM,CAAC,EAAE,aAAa,EACtB,SAAS,GAAE,OAAc,GACxB,mBAAmB,CAwFrB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAGnE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMapPreload.js","sourceRoot":"","sources":["../../src/hooks/useMapPreload.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"useMapPreload.js","sourceRoot":"","sources":["../../src/hooks/useMapPreload.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * 地图预加载 Hook\n * 提供便捷的 React Hook 来管理地图预加载\n */\n\nimport { useEffect, useState, useCallback, useRef } from 'react';\nimport { MapPreloader } from '../utils/MapPreloader';\nimport { PreloadConfig,PreloadStatus ,UseMapPreloadReturn} from '../types/preload.types';\n\n\n/**\n * 地图预加载 Hook\n * \n * @param config 预加载配置\n * @param autoStart 是否自动开始预加载,默认为 true\n * @returns 预加载状态和控制方法\n * \n * @example\n * ```tsx\n * function App() {\n * const { status, isReady, startPreload } = useMapPreload({\n * poolSize: 2,\n * delay: 1000,\n * });\n * \n * return (\n * <View>\n * <Text>预加载状态: {status}</Text>\n * {isReady && <MapView />}\n * </View>\n * );\n * }\n * ```\n */\nexport function useMapPreload(\n config?: PreloadConfig,\n autoStart: boolean = true\n): UseMapPreloadReturn {\n const [status, setStatus] = useState<PreloadStatus>(() => MapPreloader.getStatus());\n const [stats, setStats] = useState(() => MapPreloader.getStats());\n const configRef = useRef(config);\n const autoStartRef = useRef(autoStart);\n\n // 更新配置引用\n useEffect(() => {\n configRef.current = config;\n }, [config]);\n\n // 更新自动启动引用\n useEffect(() => {\n autoStartRef.current = autoStart;\n }, [autoStart]);\n\n // 更新统计信息\n const updateStats = useCallback(() => {\n setStats(MapPreloader.getStats());\n }, []);\n\n // 监听状态变化\n useEffect(() => {\n const unsubscribe = MapPreloader.addListener((newStatus) => {\n setStatus(newStatus);\n updateStats();\n });\n\n return () => {\n unsubscribe();\n };\n }, [updateStats]);\n\n // 配置并自动启动预加载\n useEffect(() => {\n if (configRef.current) {\n MapPreloader.configure(configRef.current);\n }\n\n if (autoStartRef.current) {\n MapPreloader.startPreload();\n }\n\n // 组件卸载时清理\n return () => {\n if (autoStartRef.current) {\n MapPreloader.stopPreload();\n }\n };\n }, []); // 只在挂载时执行一次\n\n // 手动开始预加载\n const startPreload = useCallback(() => {\n if (configRef.current) {\n MapPreloader.configure(configRef.current);\n }\n MapPreloader.startPreload();\n }, []);\n\n // 停止预加载\n const stopPreload = useCallback(() => {\n MapPreloader.stopPreload();\n }, []);\n\n // 清理预加载实例\n const clearInstances = useCallback(() => {\n MapPreloader.clearPreloadedInstances();\n updateStats();\n }, [updateStats]);\n\n // 获取预加载实例\n const getPreloadedInstance = useCallback(() => {\n const instance = MapPreloader.getPreloadedInstance();\n updateStats();\n return instance;\n }, [updateStats]);\n\n return {\n status,\n isLoading: status === 'loading',\n isReady: status === 'ready',\n hasError: status === 'error',\n stats,\n startPreload,\n stopPreload,\n clearInstances,\n getPreloadedInstance,\n };\n}\n\n/**\n * 简化版 Hook - 只返回预加载状态\n * \n * @param config 预加载配置\n * @returns 预加载状态\n * \n * @example\n * ```tsx\n * function App() {\n * const isReady = useMapPreloadStatus({ poolSize: 1 });\n * \n * if (!isReady) {\n * return <LoadingScreen />;\n * }\n * \n * return <MapView />;\n * }\n * ```\n */\nexport function useMapPreloadStatus(config?: PreloadConfig): boolean {\n const { isReady } = useMapPreload(config, true);\n return isReady;\n}"]}
|
package/build/index.d.ts
CHANGED
|
@@ -7,11 +7,11 @@ export type { MapViewRef } from './ExpoGaodeMapView';
|
|
|
7
7
|
export { Marker, Polyline, Polygon, Circle, HeatMap, MultiPoint, Cluster, } from './components/overlays';
|
|
8
8
|
export { requireModule, OptionalModules, getInstalledModules, printModuleInfo, createLazyLoader, } from './utils/ModuleLoader';
|
|
9
9
|
export { MapPreloader, preloadMap, getPreloadStatus, clearPreloadedMaps, } from './utils/MapPreloader';
|
|
10
|
-
export type { PreloadConfig, PreloadStatus } from './
|
|
10
|
+
export type { PreloadConfig, PreloadStatus, UseMapPreloadReturn, MapPreloaderProps } from './types/preload.types';
|
|
11
|
+
export type { UseLocationOptions, UseLocationResult } from './types/location.types';
|
|
11
12
|
export { useMapPreload, useMapPreloadStatus } from './hooks/useMapPreload';
|
|
12
|
-
export
|
|
13
|
+
export { useLocation } from './hooks/useLocation';
|
|
13
14
|
export { default as MapPreloaderComponent } from './components/MapPreloader';
|
|
14
|
-
export type { MapPreloaderProps } from './components/MapPreloader';
|
|
15
15
|
export { getSDKConfig, getWebKey } from './ExpoGaodeMapModule';
|
|
16
16
|
export { default } from './ExpoGaodeMapModule';
|
|
17
17
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,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,EACL,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,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,EACL,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAEhH,YAAY,EAAC,kBAAkB,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAA;AAGhF,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG3E,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAI7E,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAG/D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC"}
|
package/build/index.js
CHANGED
|
@@ -13,6 +13,8 @@ export { requireModule, OptionalModules, getInstalledModules, printModuleInfo, c
|
|
|
13
13
|
export { MapPreloader, preloadMap, getPreloadStatus, clearPreloadedMaps, } from './utils/MapPreloader';
|
|
14
14
|
// 导出预加载 Hook
|
|
15
15
|
export { useMapPreload, useMapPreloadStatus } from './hooks/useMapPreload';
|
|
16
|
+
//导出定位的 Hook
|
|
17
|
+
export { useLocation } from './hooks/useLocation';
|
|
16
18
|
// 导出预加载组件
|
|
17
19
|
export { default as MapPreloaderComponent } from './components/MapPreloader';
|
|
18
20
|
// 导出便捷读取的 SDK 配置与 webKey
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,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,EACL,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAE9B,YAAY;AACZ,OAAO,EACL,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,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,EACL,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAE9B,YAAY;AACZ,OAAO,EACL,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAM9B,aAAa;AACb,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE3E,YAAY;AACZ,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,UAAU;AACV,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAG7E,yBAAyB;AACzB,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAE/D,WAAW;AACX,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC","sourcesContent":["\n// 导出类型定义\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 {\n requireModule,\n OptionalModules,\n getInstalledModules,\n printModuleInfo,\n createLazyLoader,\n} from './utils/ModuleLoader';\n\n// 导出地图预加载功能\nexport {\n MapPreloader,\n preloadMap,\n getPreloadStatus,\n clearPreloadedMaps,\n} from './utils/MapPreloader';\n\nexport type { PreloadConfig, PreloadStatus ,UseMapPreloadReturn,MapPreloaderProps} from './types/preload.types';\n\nexport type {UseLocationOptions,UseLocationResult} from './types/location.types'\n\n// 导出预加载 Hook\nexport { useMapPreload, useMapPreloadStatus } from './hooks/useMapPreload';\n\n//导出定位的 Hook\nexport { useLocation } from './hooks/useLocation';\n\n// 导出预加载组件\nexport { default as MapPreloaderComponent } from './components/MapPreloader';\n\n\n// 导出便捷读取的 SDK 配置与 webKey\nexport { getSDKConfig, getWebKey } from './ExpoGaodeMapModule';\n\n// 默认导出原生模块\nexport { default } from './ExpoGaodeMapModule';\n"]}
|
package/build/types/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export type { Point, LatLng, MapPoi, LatLngBounds, CameraPosition, ColorValue, }
|
|
|
6
6
|
export { MapType } from './common.types';
|
|
7
7
|
export type { LocationEvent, CameraEvent, MapViewProps, MapViewMethods, MapViewRef, } from './map-view.types';
|
|
8
8
|
export type { Coordinates, ReGeocode, LocationOptions, LocationListener, GeoLanguage, LocationProtocol, } from './location.types';
|
|
9
|
-
export { LocationAccuracy, LocationMode, CoordinateType, } from './location.types';
|
|
9
|
+
export { LocationAccuracy, LocationMode, CoordinateType, UseLocationOptions, UseLocationResult, } from './location.types';
|
|
10
10
|
export type { MarkerProps, PolylineProps, PolygonProps, CircleProps, HeatMapProps, MultiPointItem, MultiPointProps, ClusterParams, ClusterPoint, ClusterProps, } from './overlays.types';
|
|
11
|
+
export type { PreloadConfig, PreloadStatus, PreloadStrategy, PreloadInstance, UseMapPreloadReturn, MapPreloaderProps } from './preload.types';
|
|
11
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAGH,YAAY,EACV,KAAK,EACL,MAAM,EACN,MAAM,EACN,YAAY,EACZ,cAAc,EACd,UAAU,GACX,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAGzC,YAAY,EACV,aAAa,EACb,WAAW,EACX,YAAY,EACZ,cAAc,EACd,UAAU,GACX,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EACV,WAAW,EACX,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EACV,WAAW,EACX,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,cAAc,EACd,eAAe,EACf,aAAa,EACb,YAAY,EACZ,YAAY,GACb,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EACV,aAAa,EACb,aAAa,EACb,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,iBAAiB,CAAC"}
|
package/build/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAYH,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAqBzC,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,cAAc,GAGf,MAAM,kBAAkB,CAAC","sourcesContent":["\n\n/**\n * 高德地图 Expo Module 类型定义统一导出\n * 基于 Expo Modules API 重新设计\n */\n\n// 通用类型\nexport type {\n Point,\n LatLng,\n MapPoi,\n LatLngBounds,\n CameraPosition,\n ColorValue,\n} from './common.types';\n\nexport { MapType } from './common.types';\n\n// 地图视图类型\nexport type {\n LocationEvent,\n CameraEvent,\n MapViewProps,\n MapViewMethods,\n MapViewRef,\n} from './map-view.types';\n\n// 定位类型\nexport type {\n Coordinates,\n ReGeocode,\n LocationOptions,\n LocationListener,\n GeoLanguage,\n LocationProtocol,\n} from './location.types';\n\nexport {\n LocationAccuracy,\n LocationMode,\n CoordinateType,\n UseLocationOptions,\n UseLocationResult,\n} from './location.types';\n\n// 覆盖物类型\nexport type {\n MarkerProps,\n PolylineProps,\n PolygonProps,\n CircleProps,\n HeatMapProps,\n MultiPointItem,\n MultiPointProps,\n ClusterParams,\n ClusterPoint,\n ClusterProps,\n} from './overlays.types';\n\n//预加载类型\nexport type {\n PreloadConfig,\n PreloadStatus,\n PreloadStrategy,\n PreloadInstance,\n UseMapPreloadReturn,\n MapPreloaderProps\n} from './preload.types';"]}
|
|
@@ -306,4 +306,24 @@ export interface LocationOptions {
|
|
|
306
306
|
* 定位事件监听器
|
|
307
307
|
*/
|
|
308
308
|
export type LocationListener = (location: Coordinates | ReGeocode) => void;
|
|
309
|
+
export interface UseLocationOptions {
|
|
310
|
+
/** 是否自动开始连续定位 */
|
|
311
|
+
autoStart?: boolean;
|
|
312
|
+
/** 是否自动获取一次当前位置(仅首次) */
|
|
313
|
+
autoGet?: boolean;
|
|
314
|
+
}
|
|
315
|
+
export interface UseLocationResult {
|
|
316
|
+
/** 当前最新位置(连续定位 or 一次定位) */
|
|
317
|
+
location: Coordinates | ReGeocode | null;
|
|
318
|
+
/** 是否正在连续定位 */
|
|
319
|
+
isStarted: boolean;
|
|
320
|
+
/** 手动开始连续定位 */
|
|
321
|
+
start: () => void;
|
|
322
|
+
/** 停止连续定位 */
|
|
323
|
+
stop: () => void;
|
|
324
|
+
/** 执行一次定位并返回 Promise */
|
|
325
|
+
get: () => Promise<Coordinates | ReGeocode>;
|
|
326
|
+
/** 上次定位的时间戳 */
|
|
327
|
+
timestamp: number | null;
|
|
328
|
+
}
|
|
309
329
|
//# sourceMappingURL=location.types.d.ts.map
|
|
@@ -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;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"]}
|
|
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\n\nexport interface UseLocationOptions {\n /** 是否自动开始连续定位 */\n autoStart?: boolean;\n /** 是否自动获取一次当前位置(仅首次) */\n autoGet?: boolean;\n}\n\nexport interface UseLocationResult {\n /** 当前最新位置(连续定位 or 一次定位) */\n location: Coordinates | ReGeocode | null;\n\n /** 是否正在连续定位 */\n isStarted: boolean;\n\n /** 手动开始连续定位 */\n start: () => void;\n\n /** 停止连续定位 */\n stop: () => void;\n\n /** 执行一次定位并返回 Promise */\n get: () => Promise<Coordinates | ReGeocode>;\n\n /** 上次定位的时间戳 */\n timestamp: number | null;\n}"]}
|
|
@@ -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, NativeSyntheticEvent } from 'react-native';\nimport type { CameraPosition, LatLng, LatLngBounds, MapPoi, MapType, Point } from './common.types';\n\n/**\n * 定位事件数据\n */\nexport interface LocationEvent {\n /**\n * 纬度\n */\n latitude: number;\n \n /**\n * 经度\n */\n longitude: number;\n \n /**\n * 定位精度(米)\n */\n accuracy: number;\n}\n\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: NativeSyntheticEvent<LatLng>) => void;\n\n /**\n * 点击标注点事件\n */\n onPressPoi?: (event: NativeSyntheticEvent<MapPoi>) => void;\n\n /**\n * 长按地图事件\n */\n onMapLongPress?: (event: NativeSyntheticEvent<LatLng>) => void;\n\n /**\n * 地图状态改变事件(实时触发)\n */\n onCameraMove?: (event: NativeSyntheticEvent<CameraEvent>) => void;\n\n /**\n * 地图状态改变完成事件\n */\n onCameraIdle?: (event: NativeSyntheticEvent<CameraEvent>) => void;\n\n /**\n * 地图加载完成事件\n */\n onLoad?: (event: NativeSyntheticEvent<{}>) => void;\n\n /**\n * 地图定位更新事件\n */\n onLocation?: (event: NativeSyntheticEvent<LocationEvent>) => 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 * @param center 中心点\n * @param animated 是否启用动画\n */\n setCenter(center: LatLng, animated?: boolean): void;\n\n /**\n * 设置地图缩放级别\n * @param zoom 缩放级别\n * @param animated 是否启用动画\n */\n setZoom(zoom: number, animated?: boolean): void;\n\n /**\n * 获取相机位置\n * @returns 相机位置\n */\n getCameraPosition(): Promise<CameraPosition>;\n\n \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\n}\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, NativeSyntheticEvent } from 'react-native';\nimport type { CameraPosition, LatLng, LatLngBounds, MapPoi, MapType, Point } from './common.types';\n\n/**\n * 定位事件数据\n */\nexport interface LocationEvent {\n /**\n * 纬度\n */\n latitude: number;\n \n /**\n * 经度\n */\n longitude: number;\n \n /**\n * 定位精度(米)\n */\n accuracy: number;\n}\n\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: NativeSyntheticEvent<LatLng>) => void;\n\n /**\n * 点击标注点事件\n */\n onPressPoi?: (event: NativeSyntheticEvent<MapPoi>) => void;\n\n /**\n * 长按地图事件\n */\n onMapLongPress?: (event: NativeSyntheticEvent<LatLng>) => void;\n\n /**\n * 地图状态改变事件(实时触发)\n */\n onCameraMove?: (event: NativeSyntheticEvent<CameraEvent>) => void;\n\n /**\n * 地图状态改变完成事件\n */\n onCameraIdle?: (event: NativeSyntheticEvent<CameraEvent>) => void;\n\n /**\n * 地图加载完成事件\n */\n onLoad?: (event: NativeSyntheticEvent<{}>) => void;\n\n /**\n * 地图定位更新事件\n */\n onLocation?: (event: NativeSyntheticEvent<LocationEvent>) => void;\n\n /**\n * 子组件\n */\n children?: React.ReactNode;\n}\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 * @param center 中心点\n * @param animated 是否启用动画\n */\n setCenter(center: LatLng, animated?: boolean): void;\n\n /**\n * 设置地图缩放级别\n * @param zoom 缩放级别\n * @param animated 是否启用动画\n */\n setZoom(zoom: number, animated?: boolean): void;\n\n /**\n * 获取相机位置\n * @returns 相机位置\n */\n getCameraPosition(): Promise<CameraPosition>;\n\n \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\n}\n\n"]}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { MapViewProps } from "./map-view.types";
|
|
2
|
+
/**
|
|
3
|
+
* 预加载配置
|
|
4
|
+
*/
|
|
5
|
+
export interface PreloadConfig {
|
|
6
|
+
/** 预加载的地图数量,默认为 1 */
|
|
7
|
+
poolSize?: number;
|
|
8
|
+
/** 预加载延迟时间(毫秒),默认为 0(立即预加载) */
|
|
9
|
+
delay?: number;
|
|
10
|
+
/** 是否启用预加载,默认为 true */
|
|
11
|
+
enabled?: boolean;
|
|
12
|
+
/** 预加载超时时间(毫秒),默认为 15000(15秒) */
|
|
13
|
+
timeout?: number;
|
|
14
|
+
/** 预加载策略:'native' | 'js' | 'auto' | 'hybrid',默认为 'auto' */
|
|
15
|
+
strategy?: PreloadStrategy;
|
|
16
|
+
/** 超时后是否自动回退到 JS 预加载,默认为 true */
|
|
17
|
+
fallbackOnTimeout?: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 预加载状态
|
|
21
|
+
*/
|
|
22
|
+
export type PreloadStatus = 'idle' | 'loading' | 'ready' | 'error';
|
|
23
|
+
/**
|
|
24
|
+
* 预加载策略
|
|
25
|
+
* - 'native': 仅使用原生预加载
|
|
26
|
+
* - 'js': 仅使用 JS 层预加载
|
|
27
|
+
* - 'auto': 自动选择(优先原生,不可用时用 JS)
|
|
28
|
+
* - 'hybrid': 同时启动原生和 JS,谁先完成用谁(最快最可靠)
|
|
29
|
+
*/
|
|
30
|
+
export type PreloadStrategy = 'native' | 'js' | 'auto' | 'hybrid';
|
|
31
|
+
/**
|
|
32
|
+
* 预加载实例信息
|
|
33
|
+
*/
|
|
34
|
+
export interface PreloadInstance {
|
|
35
|
+
id: string;
|
|
36
|
+
status: PreloadStatus;
|
|
37
|
+
timestamp: number;
|
|
38
|
+
error?: Error;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Hook 返回值
|
|
42
|
+
*/
|
|
43
|
+
export interface UseMapPreloadReturn {
|
|
44
|
+
/** 当前预加载状态 */
|
|
45
|
+
status: PreloadStatus;
|
|
46
|
+
/** 是否正在预加载 */
|
|
47
|
+
isLoading: boolean;
|
|
48
|
+
/** 是否已准备就绪 */
|
|
49
|
+
isReady: boolean;
|
|
50
|
+
/** 是否发生错误 */
|
|
51
|
+
hasError: boolean;
|
|
52
|
+
/** 预加载统计信息 */
|
|
53
|
+
stats: {
|
|
54
|
+
total: number;
|
|
55
|
+
ready: number;
|
|
56
|
+
loading: number;
|
|
57
|
+
error: number;
|
|
58
|
+
};
|
|
59
|
+
/** 手动开始预加载 */
|
|
60
|
+
startPreload: () => void;
|
|
61
|
+
/** 停止预加载 */
|
|
62
|
+
stopPreload: () => void;
|
|
63
|
+
/** 清理预加载实例 */
|
|
64
|
+
clearInstances: () => void;
|
|
65
|
+
/** 获取一个预加载实例 */
|
|
66
|
+
getPreloadedInstance: () => string | null;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* 预加载组件属性
|
|
70
|
+
*/
|
|
71
|
+
export interface MapPreloaderProps {
|
|
72
|
+
/** 预加载配置 */
|
|
73
|
+
config?: PreloadConfig;
|
|
74
|
+
/** 预加载的地图视图属性 */
|
|
75
|
+
mapProps?: Partial<MapViewProps>;
|
|
76
|
+
/** 是否启用预加载,默认为 true */
|
|
77
|
+
enabled?: boolean;
|
|
78
|
+
/** 预加载完成回调 */
|
|
79
|
+
onPreloadComplete?: () => void;
|
|
80
|
+
/** 预加载失败回调 */
|
|
81
|
+
onPreloadError?: (error: Error) => void;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=preload.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preload.types.d.ts","sourceRoot":"","sources":["../../src/types/preload.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,qBAAqB;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,iCAAiC;IACjC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAGD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,cAAc;IACd,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc;IACd,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,cAAc;IACd,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,YAAY;IACZ,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,cAAc;IACd,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,gBAAgB;IAChB,oBAAoB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CAC3C;AAGD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY;IACZ,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,iBAAiB;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACjC,uBAAuB;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc;IACd,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,cAAc;IACd,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACzC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preload.types.js","sourceRoot":"","sources":["../../src/types/preload.types.ts"],"names":[],"mappings":"","sourcesContent":["import { MapViewProps } from \"./map-view.types\";\n\n/**\n * 预加载配置\n */\nexport interface PreloadConfig {\n /** 预加载的地图数量,默认为 1 */\n poolSize?: number;\n /** 预加载延迟时间(毫秒),默认为 0(立即预加载) */\n delay?: number;\n /** 是否启用预加载,默认为 true */\n enabled?: boolean;\n /** 预加载超时时间(毫秒),默认为 15000(15秒) */\n timeout?: number;\n /** 预加载策略:'native' | 'js' | 'auto' | 'hybrid',默认为 'auto' */\n strategy?: PreloadStrategy;\n /** 超时后是否自动回退到 JS 预加载,默认为 true */\n fallbackOnTimeout?: boolean;\n}\n\n/**\n * 预加载状态\n */\nexport type PreloadStatus = 'idle' | 'loading' | 'ready' | 'error';\n\n/**\n * 预加载策略\n * - 'native': 仅使用原生预加载\n * - 'js': 仅使用 JS 层预加载\n * - 'auto': 自动选择(优先原生,不可用时用 JS)\n * - 'hybrid': 同时启动原生和 JS,谁先完成用谁(最快最可靠)\n */\nexport type PreloadStrategy = 'native' | 'js' | 'auto' | 'hybrid';\n\n/**\n * 预加载实例信息\n */\nexport interface PreloadInstance {\n id: string;\n status: PreloadStatus;\n timestamp: number;\n error?: Error;\n}\n\n\n/**\n * Hook 返回值\n */\nexport interface UseMapPreloadReturn {\n /** 当前预加载状态 */\n status: PreloadStatus;\n /** 是否正在预加载 */\n isLoading: boolean;\n /** 是否已准备就绪 */\n isReady: boolean;\n /** 是否发生错误 */\n hasError: boolean;\n /** 预加载统计信息 */\n stats: {\n total: number;\n ready: number;\n loading: number;\n error: number;\n };\n /** 手动开始预加载 */\n startPreload: () => void;\n /** 停止预加载 */\n stopPreload: () => void;\n /** 清理预加载实例 */\n clearInstances: () => void;\n /** 获取一个预加载实例 */\n getPreloadedInstance: () => string | null;\n}\n\n\n/**\n * 预加载组件属性\n */\nexport interface MapPreloaderProps {\n /** 预加载配置 */\n config?: PreloadConfig;\n /** 预加载的地图视图属性 */\n mapProps?: Partial<MapViewProps>;\n /** 是否启用预加载,默认为 true */\n enabled?: boolean;\n /** 预加载完成回调 */\n onPreloadComplete?: () => void;\n /** 预加载失败回调 */\n onPreloadError?: (error: Error) => void;\n}"]}
|
|
@@ -4,35 +4,7 @@
|
|
|
4
4
|
* - 如果原生预加载可用,优先使用原生方案(性能提升 60-80%)
|
|
5
5
|
* - 否则回退到 JS 层预加载(性能提升 5-25%)
|
|
6
6
|
*/
|
|
7
|
-
|
|
8
|
-
* 预加载配置
|
|
9
|
-
*/
|
|
10
|
-
export interface PreloadConfig {
|
|
11
|
-
/** 预加载的地图数量,默认为 1 */
|
|
12
|
-
poolSize?: number;
|
|
13
|
-
/** 预加载延迟时间(毫秒),默认为 0(立即预加载) */
|
|
14
|
-
delay?: number;
|
|
15
|
-
/** 是否启用预加载,默认为 true */
|
|
16
|
-
enabled?: boolean;
|
|
17
|
-
/** 预加载超时时间(毫秒),默认为 15000(15秒) */
|
|
18
|
-
timeout?: number;
|
|
19
|
-
/** 预加载策略:'native' | 'js' | 'auto' | 'hybrid',默认为 'auto' */
|
|
20
|
-
strategy?: PreloadStrategy;
|
|
21
|
-
/** 超时后是否自动回退到 JS 预加载,默认为 true */
|
|
22
|
-
fallbackOnTimeout?: boolean;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* 预加载状态
|
|
26
|
-
*/
|
|
27
|
-
export type PreloadStatus = 'idle' | 'loading' | 'ready' | 'error';
|
|
28
|
-
/**
|
|
29
|
-
* 预加载策略
|
|
30
|
-
* - 'native': 仅使用原生预加载
|
|
31
|
-
* - 'js': 仅使用 JS 层预加载
|
|
32
|
-
* - 'auto': 自动选择(优先原生,不可用时用 JS)
|
|
33
|
-
* - 'hybrid': 同时启动原生和 JS,谁先完成用谁(最快最可靠)
|
|
34
|
-
*/
|
|
35
|
-
export type PreloadStrategy = 'native' | 'js' | 'auto' | 'hybrid';
|
|
7
|
+
import { PreloadConfig, PreloadStatus } from "../types/preload.types";
|
|
36
8
|
/**
|
|
37
9
|
* 地图预加载管理器类
|
|
38
10
|
* 单例模式,管理地图实例的预加载
|