expo-gaode-map 0.1.0
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/.eslintrc.js +5 -0
- package/PUBLISHING.md +244 -0
- package/README.md +990 -0
- package/android/build.gradle +48 -0
- package/android/src/main/AndroidManifest.xml +40 -0
- package/android/src/main/java/expo/modules/gaodemap/ExpoGaodeMapModule.kt +455 -0
- package/android/src/main/java/expo/modules/gaodemap/ExpoGaodeMapView.kt +337 -0
- package/android/src/main/java/expo/modules/gaodemap/managers/CameraManager.kt +128 -0
- package/android/src/main/java/expo/modules/gaodemap/managers/OverlayManager.kt +324 -0
- package/android/src/main/java/expo/modules/gaodemap/managers/UIManager.kt +122 -0
- package/android/src/main/java/expo/modules/gaodemap/modules/LocationManager.kt +247 -0
- package/android/src/main/java/expo/modules/gaodemap/modules/SDKInitializer.kt +45 -0
- package/android/src/main/java/expo/modules/gaodemap/overlays/CircleView.kt +151 -0
- package/android/src/main/java/expo/modules/gaodemap/overlays/ClusterView.kt +127 -0
- package/android/src/main/java/expo/modules/gaodemap/overlays/HeatMapView.kt +97 -0
- package/android/src/main/java/expo/modules/gaodemap/overlays/MarkerView.kt +204 -0
- package/android/src/main/java/expo/modules/gaodemap/overlays/MultiPointView.kt +103 -0
- package/android/src/main/java/expo/modules/gaodemap/overlays/PolygonView.kt +114 -0
- package/android/src/main/java/expo/modules/gaodemap/overlays/PolylineView.kt +138 -0
- package/build/ExpoGaodeMap.types.d.ts +24 -0
- package/build/ExpoGaodeMap.types.d.ts.map +1 -0
- package/build/ExpoGaodeMap.types.js +14 -0
- package/build/ExpoGaodeMap.types.js.map +1 -0
- package/build/ExpoGaodeMapModule.d.ts +7 -0
- package/build/ExpoGaodeMapModule.d.ts.map +1 -0
- package/build/ExpoGaodeMapModule.js +14 -0
- package/build/ExpoGaodeMapModule.js.map +1 -0
- package/build/ExpoGaodeMapView.d.ts +31 -0
- package/build/ExpoGaodeMapView.d.ts.map +1 -0
- package/build/ExpoGaodeMapView.js +141 -0
- package/build/ExpoGaodeMapView.js.map +1 -0
- package/build/components/overlays/Circle.d.ts +18 -0
- package/build/components/overlays/Circle.d.ts.map +1 -0
- package/build/components/overlays/Circle.js +63 -0
- package/build/components/overlays/Circle.js.map +1 -0
- package/build/components/overlays/Cluster.d.ts +22 -0
- package/build/components/overlays/Cluster.d.ts.map +1 -0
- package/build/components/overlays/Cluster.js +35 -0
- package/build/components/overlays/Cluster.js.map +1 -0
- package/build/components/overlays/HeatMap.d.ts +21 -0
- package/build/components/overlays/HeatMap.d.ts.map +1 -0
- package/build/components/overlays/HeatMap.js +34 -0
- package/build/components/overlays/HeatMap.js.map +1 -0
- package/build/components/overlays/Marker.d.ts +17 -0
- package/build/components/overlays/Marker.d.ts.map +1 -0
- package/build/components/overlays/Marker.js +57 -0
- package/build/components/overlays/Marker.js.map +1 -0
- package/build/components/overlays/MultiPoint.d.ts +21 -0
- package/build/components/overlays/MultiPoint.d.ts.map +1 -0
- package/build/components/overlays/MultiPoint.js +34 -0
- package/build/components/overlays/MultiPoint.js.map +1 -0
- package/build/components/overlays/Polygon.d.ts +22 -0
- package/build/components/overlays/Polygon.d.ts.map +1 -0
- package/build/components/overlays/Polygon.js +100 -0
- package/build/components/overlays/Polygon.js.map +1 -0
- package/build/components/overlays/Polyline.d.ts +20 -0
- package/build/components/overlays/Polyline.d.ts.map +1 -0
- package/build/components/overlays/Polyline.js +60 -0
- package/build/components/overlays/Polyline.js.map +1 -0
- package/build/components/overlays/index.d.ts +8 -0
- package/build/components/overlays/index.d.ts.map +1 -0
- package/build/components/overlays/index.js +18 -0
- package/build/components/overlays/index.js.map +1 -0
- package/build/index.d.ts +10 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +28 -0
- package/build/index.js.map +1 -0
- package/build/modules/AMapLocation.d.ts +58 -0
- package/build/modules/AMapLocation.d.ts.map +1 -0
- package/build/modules/AMapLocation.js +141 -0
- package/build/modules/AMapLocation.js.map +1 -0
- package/build/modules/AMapSDK.d.ts +27 -0
- package/build/modules/AMapSDK.d.ts.map +1 -0
- package/build/modules/AMapSDK.js +43 -0
- package/build/modules/AMapSDK.js.map +1 -0
- package/build/modules/AMapView.d.ts +39 -0
- package/build/modules/AMapView.d.ts.map +1 -0
- package/build/modules/AMapView.js +61 -0
- package/build/modules/AMapView.js.map +1 -0
- package/build/types/common.types.d.ts +133 -0
- package/build/types/common.types.d.ts.map +1 -0
- package/build/types/common.types.js +31 -0
- package/build/types/common.types.js.map +1 -0
- package/build/types/index.d.ts +12 -0
- package/build/types/index.d.ts.map +1 -0
- package/build/types/index.js +17 -0
- package/build/types/index.js.map +1 -0
- package/build/types/location.types.d.ts +306 -0
- package/build/types/location.types.d.ts.map +1 -0
- package/build/types/location.types.js +93 -0
- package/build/types/location.types.js.map +1 -0
- package/build/types/map-view.types.d.ts +213 -0
- package/build/types/map-view.types.d.ts.map +1 -0
- package/build/types/map-view.types.js +6 -0
- package/build/types/map-view.types.js.map +1 -0
- package/build/types/overlays.types.d.ts +296 -0
- package/build/types/overlays.types.d.ts.map +1 -0
- package/build/types/overlays.types.js +6 -0
- package/build/types/overlays.types.js.map +1 -0
- package/build/types/sdk.types.d.ts +113 -0
- package/build/types/sdk.types.d.ts.map +1 -0
- package/build/types/sdk.types.js +6 -0
- package/build/types/sdk.types.js.map +1 -0
- package/docs/followUserLocation.md +186 -0
- package/expo-module.config.json +9 -0
- package/ios/ExpoGaodeMap.podspec +29 -0
- package/ios/ExpoGaodeMapModule.swift +48 -0
- package/ios/ExpoGaodeMapView.swift +38 -0
- package/package.json +45 -0
- package/src/ExpoGaodeMap.types.ts +68 -0
- package/src/ExpoGaodeMapModule.ts +21 -0
- package/src/ExpoGaodeMapView.tsx +151 -0
- package/src/components/overlays/Circle.tsx +73 -0
- package/src/components/overlays/Cluster.tsx +38 -0
- package/src/components/overlays/HeatMap.tsx +37 -0
- package/src/components/overlays/Marker.tsx +66 -0
- package/src/components/overlays/MultiPoint.tsx +37 -0
- package/src/components/overlays/Polygon.tsx +107 -0
- package/src/components/overlays/Polyline.tsx +69 -0
- package/src/components/overlays/index.ts +18 -0
- package/src/index.ts +55 -0
- package/src/modules/AMapLocation.ts +164 -0
- package/src/modules/AMapSDK.ts +48 -0
- package/src/modules/AMapView.ts +68 -0
- package/src/types/README.md +186 -0
- package/src/types/common.types.ts +155 -0
- package/src/types/index.ts +74 -0
- package/src/types/location.types.ts +364 -0
- package/src/types/map-view.types.ts +249 -0
- package/src/types/overlays.types.ts +346 -0
- package/src/types/sdk.types.ts +128 -0
- package/tsconfig.json +9 -0
|
@@ -0,0 +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 * 当为 true 时,地图会自动移动跟随用户位置(适合导航场景)\n * 当为 false 时,只显示定位点,不会自动移动地图(默认值,适合浏览场景)\n * @default false\n */\n followUserLocation?: boolean;\n\n /**\n * 是否显示定位图标\n */\n myLocationIcon?: boolean;\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 onPress?: (event: LatLng) => void;\n\n /**\n * 点击标注点事件\n */\n onPressPoi?: (event: MapPoi) => void;\n\n /**\n * 长按地图事件\n */\n onLongPress?: (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 * 子组件\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"]}
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 高德地图覆盖物相关类型定义
|
|
3
|
+
* 基于 Expo Modules API
|
|
4
|
+
*/
|
|
5
|
+
import type { ImageSourcePropType, ViewStyle } from 'react-native';
|
|
6
|
+
import type { ColorValue, LatLng, Point } from './common.types';
|
|
7
|
+
/**
|
|
8
|
+
* 标记点属性
|
|
9
|
+
*/
|
|
10
|
+
export interface MarkerProps {
|
|
11
|
+
/**
|
|
12
|
+
* 坐标
|
|
13
|
+
*/
|
|
14
|
+
position: LatLng;
|
|
15
|
+
/**
|
|
16
|
+
* 图标
|
|
17
|
+
*/
|
|
18
|
+
icon?: ImageSourcePropType;
|
|
19
|
+
/**
|
|
20
|
+
* 标题
|
|
21
|
+
*/
|
|
22
|
+
title?: string;
|
|
23
|
+
/**
|
|
24
|
+
* 描述
|
|
25
|
+
*/
|
|
26
|
+
snippet?: string;
|
|
27
|
+
/**
|
|
28
|
+
* 透明度 [0, 1]
|
|
29
|
+
* @platform android
|
|
30
|
+
*/
|
|
31
|
+
opacity?: number;
|
|
32
|
+
/**
|
|
33
|
+
* 是否可拖拽
|
|
34
|
+
*/
|
|
35
|
+
draggable?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* 是否平贴地图
|
|
38
|
+
* @platform android
|
|
39
|
+
*/
|
|
40
|
+
flat?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* 层级
|
|
43
|
+
*/
|
|
44
|
+
zIndex?: number;
|
|
45
|
+
/**
|
|
46
|
+
* 覆盖物锚点比例
|
|
47
|
+
* @platform android
|
|
48
|
+
*/
|
|
49
|
+
anchor?: Point;
|
|
50
|
+
/**
|
|
51
|
+
* 覆盖物偏移位置
|
|
52
|
+
* @platform ios
|
|
53
|
+
*/
|
|
54
|
+
centerOffset?: Point;
|
|
55
|
+
/**
|
|
56
|
+
* 自定义视图
|
|
57
|
+
*/
|
|
58
|
+
children?: React.ReactNode;
|
|
59
|
+
/**
|
|
60
|
+
* 点击事件
|
|
61
|
+
*/
|
|
62
|
+
onPress?: () => void;
|
|
63
|
+
/**
|
|
64
|
+
* 拖拽开始事件
|
|
65
|
+
*/
|
|
66
|
+
onDragStart?: () => void;
|
|
67
|
+
/**
|
|
68
|
+
* 拖拽中事件
|
|
69
|
+
*/
|
|
70
|
+
onDrag?: () => void;
|
|
71
|
+
/**
|
|
72
|
+
* 拖拽结束事件
|
|
73
|
+
*/
|
|
74
|
+
onDragEnd?: (event: {
|
|
75
|
+
nativeEvent: LatLng;
|
|
76
|
+
}) => void;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* 折线属性
|
|
80
|
+
*/
|
|
81
|
+
export interface PolylineProps {
|
|
82
|
+
/**
|
|
83
|
+
* 节点坐标数组
|
|
84
|
+
*/
|
|
85
|
+
points: LatLng[];
|
|
86
|
+
/**
|
|
87
|
+
* 线宽
|
|
88
|
+
*/
|
|
89
|
+
width?: number;
|
|
90
|
+
/**
|
|
91
|
+
* 线条颜色
|
|
92
|
+
*/
|
|
93
|
+
color?: ColorValue;
|
|
94
|
+
/**
|
|
95
|
+
* 层级
|
|
96
|
+
*/
|
|
97
|
+
zIndex?: number;
|
|
98
|
+
/**
|
|
99
|
+
* 分段颜色
|
|
100
|
+
*/
|
|
101
|
+
colors?: ColorValue[];
|
|
102
|
+
/**
|
|
103
|
+
* 是否使用渐变色
|
|
104
|
+
*/
|
|
105
|
+
gradient?: boolean;
|
|
106
|
+
/**
|
|
107
|
+
* 是否绘制大地线
|
|
108
|
+
*/
|
|
109
|
+
geodesic?: boolean;
|
|
110
|
+
/**
|
|
111
|
+
* 是否绘制虚线
|
|
112
|
+
*/
|
|
113
|
+
dotted?: boolean;
|
|
114
|
+
/**
|
|
115
|
+
* 点击事件
|
|
116
|
+
*/
|
|
117
|
+
onPress?: () => void;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* 多边形属性
|
|
121
|
+
*/
|
|
122
|
+
export interface PolygonProps {
|
|
123
|
+
/**
|
|
124
|
+
* 节点坐标数组
|
|
125
|
+
*/
|
|
126
|
+
points: LatLng[];
|
|
127
|
+
/**
|
|
128
|
+
* 边线宽度
|
|
129
|
+
*/
|
|
130
|
+
strokeWidth?: number;
|
|
131
|
+
/**
|
|
132
|
+
* 边线颜色
|
|
133
|
+
*/
|
|
134
|
+
strokeColor?: ColorValue;
|
|
135
|
+
/**
|
|
136
|
+
* 填充颜色
|
|
137
|
+
*/
|
|
138
|
+
fillColor?: ColorValue;
|
|
139
|
+
/**
|
|
140
|
+
* 层级
|
|
141
|
+
*/
|
|
142
|
+
zIndex?: number;
|
|
143
|
+
/**
|
|
144
|
+
* 点击事件
|
|
145
|
+
*/
|
|
146
|
+
onPress?: () => void;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* 圆形属性
|
|
150
|
+
*/
|
|
151
|
+
export interface CircleProps {
|
|
152
|
+
/**
|
|
153
|
+
* 圆心坐标
|
|
154
|
+
*/
|
|
155
|
+
center: LatLng;
|
|
156
|
+
/**
|
|
157
|
+
* 半径(米)
|
|
158
|
+
*/
|
|
159
|
+
radius: number;
|
|
160
|
+
/**
|
|
161
|
+
* 边线宽度
|
|
162
|
+
*/
|
|
163
|
+
strokeWidth?: number;
|
|
164
|
+
/**
|
|
165
|
+
* 边线颜色
|
|
166
|
+
*/
|
|
167
|
+
strokeColor?: ColorValue;
|
|
168
|
+
/**
|
|
169
|
+
* 填充颜色
|
|
170
|
+
*/
|
|
171
|
+
fillColor?: ColorValue;
|
|
172
|
+
/**
|
|
173
|
+
* 层级
|
|
174
|
+
*/
|
|
175
|
+
zIndex?: number;
|
|
176
|
+
/**
|
|
177
|
+
* 点击事件
|
|
178
|
+
*/
|
|
179
|
+
onPress?: () => void;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* 热力图属性
|
|
183
|
+
*/
|
|
184
|
+
export interface HeatMapProps {
|
|
185
|
+
/**
|
|
186
|
+
* 热力点数据
|
|
187
|
+
*/
|
|
188
|
+
data: LatLng[];
|
|
189
|
+
/**
|
|
190
|
+
* 热力半径(米)
|
|
191
|
+
*/
|
|
192
|
+
radius?: number;
|
|
193
|
+
/**
|
|
194
|
+
* 透明度 [0, 1]
|
|
195
|
+
*/
|
|
196
|
+
opacity?: number;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* 海量点标记项
|
|
200
|
+
*/
|
|
201
|
+
export interface MultiPointItem extends LatLng {
|
|
202
|
+
/**
|
|
203
|
+
* 唯一标识
|
|
204
|
+
*/
|
|
205
|
+
id?: string | number;
|
|
206
|
+
/**
|
|
207
|
+
* 自定义数据
|
|
208
|
+
*/
|
|
209
|
+
data?: any;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* 海量点属性
|
|
213
|
+
*/
|
|
214
|
+
export interface MultiPointProps {
|
|
215
|
+
/**
|
|
216
|
+
* 点集合
|
|
217
|
+
*/
|
|
218
|
+
items: MultiPointItem[];
|
|
219
|
+
/**
|
|
220
|
+
* 图标
|
|
221
|
+
*/
|
|
222
|
+
icon?: ImageSourcePropType;
|
|
223
|
+
/**
|
|
224
|
+
* 点击事件
|
|
225
|
+
*/
|
|
226
|
+
onPress?: (event: {
|
|
227
|
+
nativeEvent: {
|
|
228
|
+
index: number;
|
|
229
|
+
item: MultiPointItem;
|
|
230
|
+
};
|
|
231
|
+
}) => void;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* 聚合点参数
|
|
235
|
+
*/
|
|
236
|
+
export interface ClusterParams {
|
|
237
|
+
/**
|
|
238
|
+
* 唯一标识
|
|
239
|
+
*/
|
|
240
|
+
id: number;
|
|
241
|
+
/**
|
|
242
|
+
* 包含的标记点数量
|
|
243
|
+
*/
|
|
244
|
+
count: number;
|
|
245
|
+
/**
|
|
246
|
+
* 聚合点坐标
|
|
247
|
+
*/
|
|
248
|
+
position: LatLng;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* 聚合点项
|
|
252
|
+
*/
|
|
253
|
+
export interface ClusterPoint {
|
|
254
|
+
/**
|
|
255
|
+
* 坐标
|
|
256
|
+
*/
|
|
257
|
+
position: LatLng;
|
|
258
|
+
/**
|
|
259
|
+
* 自定义数据
|
|
260
|
+
*/
|
|
261
|
+
properties?: any;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* 聚合图层属性
|
|
265
|
+
*/
|
|
266
|
+
export interface ClusterProps {
|
|
267
|
+
/**
|
|
268
|
+
* 聚合半径
|
|
269
|
+
*/
|
|
270
|
+
radius?: number;
|
|
271
|
+
/**
|
|
272
|
+
* 聚合点样式
|
|
273
|
+
*/
|
|
274
|
+
clusterStyle?: ViewStyle;
|
|
275
|
+
/**
|
|
276
|
+
* 聚合点文本样式
|
|
277
|
+
*/
|
|
278
|
+
clusterTextStyle?: ViewStyle;
|
|
279
|
+
/**
|
|
280
|
+
* 坐标点列表
|
|
281
|
+
*/
|
|
282
|
+
points: ClusterPoint[];
|
|
283
|
+
/**
|
|
284
|
+
* 渲染标记点
|
|
285
|
+
*/
|
|
286
|
+
renderMarker: (item: ClusterPoint) => React.ReactNode;
|
|
287
|
+
/**
|
|
288
|
+
* 渲染聚合点
|
|
289
|
+
*/
|
|
290
|
+
renderCluster?: (params: ClusterParams) => React.ReactNode;
|
|
291
|
+
/**
|
|
292
|
+
* 聚合点点击事件
|
|
293
|
+
*/
|
|
294
|
+
onPress?: (params: ClusterParams) => void;
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=overlays.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlays.types.d.ts","sourceRoot":"","sources":["../../src/types/overlays.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +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?: ImageSourcePropType;\n\n /**\n * 标题\n */\n title?: string;\n\n /**\n * 描述\n */\n snippet?: string;\n\n /**\n * 透明度 [0, 1]\n * @platform android\n */\n opacity?: number;\n\n /**\n * 是否可拖拽\n */\n draggable?: boolean;\n\n /**\n * 是否平贴地图\n * @platform android\n */\n flat?: boolean;\n\n /**\n * 层级\n */\n zIndex?: number;\n\n /**\n * 覆盖物锚点比例\n * @platform android\n */\n anchor?: Point;\n\n /**\n * 覆盖物偏移位置\n * @platform ios\n */\n centerOffset?: Point;\n\n /**\n * 自定义视图\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 */\n gradient?: boolean;\n\n /**\n * 是否绘制大地线\n */\n geodesic?: boolean;\n\n /**\n * 是否绘制虚线\n */\n dotted?: boolean;\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 */\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"]}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 高德地图 SDK 模块类型定义
|
|
3
|
+
* 基于 Expo Modules API
|
|
4
|
+
*/
|
|
5
|
+
import type { LatLng } from './common.types';
|
|
6
|
+
import type { Coordinates, ReGeocode, LocationOptions, LocationListener, CoordinateType } from './location.types';
|
|
7
|
+
/**
|
|
8
|
+
* SDK 初始化配置
|
|
9
|
+
*/
|
|
10
|
+
export interface SDKConfig {
|
|
11
|
+
/**
|
|
12
|
+
* iOS API Key
|
|
13
|
+
*/
|
|
14
|
+
iosKey?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Android API Key
|
|
17
|
+
*/
|
|
18
|
+
androidKey?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* 高德地图 SDK 模块接口
|
|
22
|
+
*/
|
|
23
|
+
export interface AMapSDKModule {
|
|
24
|
+
/**
|
|
25
|
+
* 初始化 SDK
|
|
26
|
+
* @param config SDK配置
|
|
27
|
+
*/
|
|
28
|
+
initSDK(config: SDKConfig): void;
|
|
29
|
+
/**
|
|
30
|
+
* 获取 SDK 版本号
|
|
31
|
+
*/
|
|
32
|
+
getVersion(): Promise<string>;
|
|
33
|
+
/**
|
|
34
|
+
* 设置 API Key(单平台)
|
|
35
|
+
* @param key API密钥
|
|
36
|
+
*/
|
|
37
|
+
setApiKey(key: string): void;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* 高德定位模块接口
|
|
41
|
+
*/
|
|
42
|
+
export interface AMapLocationModule {
|
|
43
|
+
/**
|
|
44
|
+
* 配置定位选项
|
|
45
|
+
* @param options 定位配置选项
|
|
46
|
+
*/
|
|
47
|
+
configure(options: LocationOptions): void;
|
|
48
|
+
/**
|
|
49
|
+
* 开始连续定位
|
|
50
|
+
*/
|
|
51
|
+
start(): void;
|
|
52
|
+
/**
|
|
53
|
+
* 停止定位
|
|
54
|
+
*/
|
|
55
|
+
stop(): void;
|
|
56
|
+
/**
|
|
57
|
+
* 是否正在定位
|
|
58
|
+
*/
|
|
59
|
+
isStarted(): Promise<boolean>;
|
|
60
|
+
/**
|
|
61
|
+
* 获取当前位置(单次定位)
|
|
62
|
+
*/
|
|
63
|
+
getCurrentLocation(): Promise<Coordinates | ReGeocode>;
|
|
64
|
+
/**
|
|
65
|
+
* 添加定位监听器
|
|
66
|
+
* @param listener 定位回调函数
|
|
67
|
+
* @returns 订阅对象,用于取消监听
|
|
68
|
+
*/
|
|
69
|
+
addLocationListener(listener: LocationListener): {
|
|
70
|
+
remove: () => void;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* 坐标转换
|
|
74
|
+
* @param coordinate 待转换的坐标
|
|
75
|
+
* @param type 坐标系类型
|
|
76
|
+
*/
|
|
77
|
+
coordinateConvert(coordinate: LatLng, type: CoordinateType): Promise<LatLng>;
|
|
78
|
+
/**
|
|
79
|
+
* 开始获取设备朝向
|
|
80
|
+
* @platform ios
|
|
81
|
+
*/
|
|
82
|
+
startUpdatingHeading(): void;
|
|
83
|
+
/**
|
|
84
|
+
* 停止获取设备朝向
|
|
85
|
+
* @platform ios
|
|
86
|
+
*/
|
|
87
|
+
stopUpdatingHeading(): void;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* 模块事件类型
|
|
91
|
+
*/
|
|
92
|
+
export interface ModuleEvents {
|
|
93
|
+
/**
|
|
94
|
+
* 定位更新事件
|
|
95
|
+
*/
|
|
96
|
+
onLocationUpdate: (location: Coordinates | ReGeocode) => void;
|
|
97
|
+
/**
|
|
98
|
+
* 定位错误事件
|
|
99
|
+
*/
|
|
100
|
+
onLocationError: (error: {
|
|
101
|
+
code: number;
|
|
102
|
+
message: string;
|
|
103
|
+
}) => void;
|
|
104
|
+
/**
|
|
105
|
+
* 朝向更新事件
|
|
106
|
+
* @platform ios
|
|
107
|
+
*/
|
|
108
|
+
onHeadingUpdate: (heading: {
|
|
109
|
+
magneticHeading: number;
|
|
110
|
+
trueHeading: number;
|
|
111
|
+
}) => void;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=sdk.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk.types.d.ts","sourceRoot":"","sources":["../../src/types/sdk.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,cAAc,EACf,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,OAAO,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IAEjC;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9B;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,SAAS,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAE1C;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;OAEG;IACH,IAAI,IAAI,IAAI,CAAC;IAEb;;OAEG;IACH,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAE9B;;OAEG;IACH,kBAAkB,IAAI,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAEvD;;;;OAIG;IACH,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,GAAG;QAAE,MAAM,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;IAExE;;;;OAIG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE7E;;;OAGG;IACH,oBAAoB,IAAI,IAAI,CAAC;IAE7B;;;OAGG;IACH,mBAAmB,IAAI,IAAI,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,gBAAgB,EAAE,CAAC,QAAQ,EAAE,WAAW,GAAG,SAAS,KAAK,IAAI,CAAC;IAE9D;;OAEG;IACH,eAAe,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAEpE;;;OAGG;IACH,eAAe,EAAE,CAAC,OAAO,EAAE;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACtF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk.types.js","sourceRoot":"","sources":["../../src/types/sdk.types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * 高德地图 SDK 模块类型定义\n * 基于 Expo Modules API\n */\n\nimport type { LatLng } from './common.types';\nimport type { \n Coordinates, \n ReGeocode, \n LocationOptions, \n LocationListener,\n CoordinateType \n} from './location.types';\n\n/**\n * SDK 初始化配置\n */\nexport interface SDKConfig {\n /**\n * iOS API Key\n */\n iosKey?: string;\n\n /**\n * Android API Key\n */\n androidKey?: string;\n}\n\n/**\n * 高德地图 SDK 模块接口\n */\nexport interface AMapSDKModule {\n /**\n * 初始化 SDK\n * @param config SDK配置\n */\n initSDK(config: SDKConfig): void;\n\n /**\n * 获取 SDK 版本号\n */\n getVersion(): Promise<string>;\n\n /**\n * 设置 API Key(单平台)\n * @param key API密钥\n */\n setApiKey(key: string): void;\n}\n\n/**\n * 高德定位模块接口\n */\nexport interface AMapLocationModule {\n /**\n * 配置定位选项\n * @param options 定位配置选项\n */\n configure(options: LocationOptions): void;\n\n /**\n * 开始连续定位\n */\n start(): void;\n\n /**\n * 停止定位\n */\n stop(): void;\n\n /**\n * 是否正在定位\n */\n isStarted(): Promise<boolean>;\n\n /**\n * 获取当前位置(单次定位)\n */\n getCurrentLocation(): Promise<Coordinates | ReGeocode>;\n\n /**\n * 添加定位监听器\n * @param listener 定位回调函数\n * @returns 订阅对象,用于取消监听\n */\n addLocationListener(listener: LocationListener): { remove: () => void };\n\n /**\n * 坐标转换\n * @param coordinate 待转换的坐标\n * @param type 坐标系类型\n */\n coordinateConvert(coordinate: LatLng, type: CoordinateType): Promise<LatLng>;\n\n /**\n * 开始获取设备朝向\n * @platform ios\n */\n startUpdatingHeading(): void;\n\n /**\n * 停止获取设备朝向\n * @platform ios\n */\n stopUpdatingHeading(): void;\n}\n\n/**\n * 模块事件类型\n */\nexport interface ModuleEvents {\n /**\n * 定位更新事件\n */\n onLocationUpdate: (location: Coordinates | ReGeocode) => void;\n\n /**\n * 定位错误事件\n */\n onLocationError: (error: { code: number; message: string }) => void;\n\n /**\n * 朝向更新事件\n * @platform ios\n */\n onHeadingUpdate: (heading: { magneticHeading: number; trueHeading: number }) => void;\n}\n"]}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
# followUserLocation 属性使用说明
|
|
2
|
+
|
|
3
|
+
## 📖 概述
|
|
4
|
+
|
|
5
|
+
`followUserLocation` 是地图组件的一个可选属性,用于控制地图是否自动跟随用户位置移动。
|
|
6
|
+
|
|
7
|
+
## 🎯 使用场景
|
|
8
|
+
|
|
9
|
+
### 1. **浏览模式**(默认 - `false`)
|
|
10
|
+
- ✅ 显示用户定位点
|
|
11
|
+
- ✅ 用户可以自由滑动地图
|
|
12
|
+
- ✅ 地图**不会**自动移动
|
|
13
|
+
|
|
14
|
+
**适用场景**:
|
|
15
|
+
- 地图浏览
|
|
16
|
+
- 查看周边信息
|
|
17
|
+
- 选择地点
|
|
18
|
+
|
|
19
|
+
```tsx
|
|
20
|
+
<MapView
|
|
21
|
+
myLocationEnabled={true}
|
|
22
|
+
followUserLocation={false} // 默认值,可以省略
|
|
23
|
+
style={{ flex: 1 }}
|
|
24
|
+
/>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### 2. **导航模式**(`true`)
|
|
28
|
+
- ✅ 显示用户定位点
|
|
29
|
+
- ✅ 地图会自动跟随用户位置移动
|
|
30
|
+
- ⚠️ 用户滑动后,定位更新时会重新跟随
|
|
31
|
+
|
|
32
|
+
**适用场景**:
|
|
33
|
+
- 实时导航
|
|
34
|
+
- 运动轨迹记录
|
|
35
|
+
- 位置追踪
|
|
36
|
+
|
|
37
|
+
```tsx
|
|
38
|
+
<MapView
|
|
39
|
+
myLocationEnabled={true}
|
|
40
|
+
followUserLocation={true} // 开启跟随
|
|
41
|
+
style={{ flex: 1 }}
|
|
42
|
+
/>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 💡 完整示例
|
|
46
|
+
|
|
47
|
+
### 可切换跟随模式
|
|
48
|
+
|
|
49
|
+
```tsx
|
|
50
|
+
import React, { useState } from 'react';
|
|
51
|
+
import { View, Button, StyleSheet } from 'react-native';
|
|
52
|
+
import { MapView } from 'expo-gaode-map';
|
|
53
|
+
|
|
54
|
+
export default function App() {
|
|
55
|
+
const [followMode, setFollowMode] = useState(false);
|
|
56
|
+
|
|
57
|
+
return (
|
|
58
|
+
<View style={styles.container}>
|
|
59
|
+
<MapView
|
|
60
|
+
style={styles.map}
|
|
61
|
+
myLocationEnabled={true}
|
|
62
|
+
followUserLocation={followMode}
|
|
63
|
+
initialCameraPosition={{
|
|
64
|
+
target: { latitude: 39.9, longitude: 116.4 },
|
|
65
|
+
zoom: 15,
|
|
66
|
+
}}
|
|
67
|
+
/>
|
|
68
|
+
|
|
69
|
+
<View style={styles.controls}>
|
|
70
|
+
<Button
|
|
71
|
+
title={followMode ? '浏览模式' : '跟随模式'}
|
|
72
|
+
onPress={() => setFollowMode(!followMode)}
|
|
73
|
+
/>
|
|
74
|
+
</View>
|
|
75
|
+
</View>
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const styles = StyleSheet.create({
|
|
80
|
+
container: {
|
|
81
|
+
flex: 1,
|
|
82
|
+
},
|
|
83
|
+
map: {
|
|
84
|
+
flex: 1,
|
|
85
|
+
},
|
|
86
|
+
controls: {
|
|
87
|
+
position: 'absolute',
|
|
88
|
+
bottom: 20,
|
|
89
|
+
left: 20,
|
|
90
|
+
right: 20,
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## 📋 属性详情
|
|
96
|
+
|
|
97
|
+
| 属性 | 类型 | 默认值 | 说明 |
|
|
98
|
+
|------|------|--------|------|
|
|
99
|
+
| `followUserLocation` | `boolean` | `false` | 是否跟随用户位置 |
|
|
100
|
+
| `myLocationEnabled` | `boolean` | `false` | 是否显示定位点(必须同时开启) |
|
|
101
|
+
|
|
102
|
+
## 🔧 实现原理
|
|
103
|
+
|
|
104
|
+
### Android 端定位模式
|
|
105
|
+
|
|
106
|
+
| `followUserLocation` | 高德地图模式 | 行为 |
|
|
107
|
+
|---------------------|------------|------|
|
|
108
|
+
| `false` | `LOCATION_TYPE_SHOW` | 只显示定位点 |
|
|
109
|
+
| `true` | `LOCATION_TYPE_FOLLOW` | 跟随用户位置 |
|
|
110
|
+
|
|
111
|
+
## ⚠️ 注意事项
|
|
112
|
+
|
|
113
|
+
1. **必须先开启定位**
|
|
114
|
+
```tsx
|
|
115
|
+
// ❌ 错误 - 没有开启定位
|
|
116
|
+
<MapView followUserLocation={true} />
|
|
117
|
+
|
|
118
|
+
// ✅ 正确 - 同时开启定位
|
|
119
|
+
<MapView
|
|
120
|
+
myLocationEnabled={true}
|
|
121
|
+
followUserLocation={true}
|
|
122
|
+
/>
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
2. **权限要求**
|
|
126
|
+
- 需要定位权限(`ACCESS_FINE_LOCATION`)
|
|
127
|
+
- 需要在 `app.json` 中配置
|
|
128
|
+
|
|
129
|
+
3. **默认行为已优化**
|
|
130
|
+
- 不设置 `followUserLocation` 时,默认为 `false`
|
|
131
|
+
- 不会再出现自动跟随的问题
|
|
132
|
+
|
|
133
|
+
## 🎨 UI 建议
|
|
134
|
+
|
|
135
|
+
建议提供一个按钮让用户切换模式:
|
|
136
|
+
|
|
137
|
+
```tsx
|
|
138
|
+
<TouchableOpacity
|
|
139
|
+
style={styles.locationButton}
|
|
140
|
+
onPress={() => setFollowMode(!followMode)}
|
|
141
|
+
>
|
|
142
|
+
<Icon
|
|
143
|
+
name={followMode ? 'location-arrow' : 'location'}
|
|
144
|
+
size={24}
|
|
145
|
+
/>
|
|
146
|
+
</TouchableOpacity>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## 🐛 常见问题
|
|
150
|
+
|
|
151
|
+
### Q: 为什么地图一直自动移动?
|
|
152
|
+
A: 因为 `followUserLocation` 被设置为 `true` 或使用了旧版本。解决方法:
|
|
153
|
+
```tsx
|
|
154
|
+
// 方案1:不设置(默认 false)
|
|
155
|
+
<MapView myLocationEnabled={true} />
|
|
156
|
+
|
|
157
|
+
// 方案2:显式设置为 false
|
|
158
|
+
<MapView
|
|
159
|
+
myLocationEnabled={true}
|
|
160
|
+
followUserLocation={false}
|
|
161
|
+
/>
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Q: 如何只在首次定位时移动地图?
|
|
165
|
+
A: 使用 `onLoad` 事件:
|
|
166
|
+
```tsx
|
|
167
|
+
const [hasInitialized, setHasInitialized] = useState(false);
|
|
168
|
+
|
|
169
|
+
<MapView
|
|
170
|
+
myLocationEnabled={true}
|
|
171
|
+
followUserLocation={false}
|
|
172
|
+
onLoad={async () => {
|
|
173
|
+
if (!hasInitialized) {
|
|
174
|
+
const position = await getCurrentLocation();
|
|
175
|
+
mapRef.current?.setCenter(position, true);
|
|
176
|
+
setHasInitialized(true);
|
|
177
|
+
}
|
|
178
|
+
}}
|
|
179
|
+
/>
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## 📚 相关文档
|
|
183
|
+
|
|
184
|
+
- [MapView API 文档](./MapView.md)
|
|
185
|
+
- [定位功能文档](./Location.md)
|
|
186
|
+
- [高德地图官方文档](https://lbs.amap.com/api/android-sdk/guide/map/mylocation)
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require 'json'
|
|
2
|
+
|
|
3
|
+
package = JSON.parse(File.read(File.join(__dir__, '..', 'package.json')))
|
|
4
|
+
|
|
5
|
+
Pod::Spec.new do |s|
|
|
6
|
+
s.name = 'ExpoGaodeMap'
|
|
7
|
+
s.version = package['version']
|
|
8
|
+
s.summary = package['description']
|
|
9
|
+
s.description = package['description']
|
|
10
|
+
s.license = package['license']
|
|
11
|
+
s.author = package['author']
|
|
12
|
+
s.homepage = package['homepage']
|
|
13
|
+
s.platforms = {
|
|
14
|
+
:ios => '15.1',
|
|
15
|
+
:tvos => '15.1'
|
|
16
|
+
}
|
|
17
|
+
s.swift_version = '5.9'
|
|
18
|
+
s.source = { git: 'https://github.com/TomWq/expo-gaode-map' }
|
|
19
|
+
s.static_framework = true
|
|
20
|
+
|
|
21
|
+
s.dependency 'ExpoModulesCore'
|
|
22
|
+
s.dependency 'AMap3DMap', '10.0.600'
|
|
23
|
+
# Swift/Objective-C compatibility
|
|
24
|
+
s.pod_target_xcconfig = {
|
|
25
|
+
'DEFINES_MODULE' => 'YES',
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
s.source_files = "**/*.{h,m,mm,swift,hpp,cpp}"
|
|
29
|
+
end
|