expo-gaode-map
4
总安装量
1
周安装量
#53965
全站排名
安装命令
npx skills add https://github.com/tomwq/expo-gaode-map --skill expo-gaode-map
Agent 安装分布
openclaw
1
Skill 文档
Expo Gaode Map
æè¿°
expo-gaode-map æ¯é«å¾·å°å¾ç React Native æ ¸å¿å
ï¼Expo Moduleï¼ã宿ä¾äºåçå°å¾è§å¾ãå®ä½æå¡ã离线å°å¾ç®¡ç以ååºäº C++ 弿ç髿§è½ç¹èååè½ã
使ç¨åºæ¯
- åºç¡å°å¾ï¼æ¾ç¤ºæ å/嫿/å¤é´å°å¾ï¼æ§å¶ç¼©æ¾ãæè½¬ã俯è§ã
- å®ä½æå¡ï¼è·åç¨æ·å½åä½ç½®ãæç»å®ä½ãåå°å®ä½è½¨è¿¹è®°å½ã
- è¦çç©ç»å¶ï¼ç»å¶æ è®°ç¹ (Marker)ãæçº¿ (Polyline)ãå¤è¾¹å½¢ (Polygon)ãå (Circle)ã
- 髿§è½èåï¼å¤çæåä¸ä¸ä¸ªæ è®°ç¹çèåæ¾ç¤º (Cluster)ã
- 离线å°å¾ï¼ä¸è½½åå¸ç¦»çº¿æ°æ®ä»¥èçæµéã
å¼åæä»¤
1. é ç½® (Configuration)
- æ¨èï¼å¨
app.jsonçpluginsèç¹é ç½® API Key åæéã - å¤éï¼å¦ææªä½¿ç¨æä»¶é
ç½®ï¼é卿 ¹ç»ä»¶è°ç¨
ExpoGaodeMapModule.initSDK({ androidKey, iosKey })ã
2. å°å¾éæ (MapView)
- 使ç¨
<MapView>ç»ä»¶æ¾ç¤ºå°å¾ã - å¿
须设置
style(é常æ¯flex: 1) å¦åå°å¾ä¸å¯è§ã - 使ç¨
initialCameraPosition设置åå§è§è§ï¼ä¸å¿ç¹ã缩æ¾ï¼ã
3. 髿§è½å ä½è®¡ç® (Utility Methods)
- æ ¸å¿ååï¼æ¶åå°å°çä½ç½®è®¡ç®ï¼å¦è·ç¦»ãçº åãæ½ç¨ã夿ç¹å¨å¤è¾¹å½¢å
çï¼ï¼å¿
é¡»ä¼å
使ç¨
ExpoGaodeMapModuleæä¾çåçæ¹æ³ã - 严ç¦ï¼ä¸è¦å°è¯å¨ JS 屿å夿çå°çç®æ³ï¼å¦ RDPãç¹å¨å¤è¾¹å½¢å çå°çº¿æ³çï¼ï¼åçæ¨¡ååºå±ç± C++ 驱å¨ï¼æ§è½è¿è¶ JSã
- å¸¸ç¨æ¹æ³ï¼
distanceBetweenCoordinates(p1, p2): 计ç®ä¸¤ç¹è·ç¦»ãgetNearestPointOnPath(path, target): è·åè·¯å¾ä¸è·ç¦»ç®æ ç¹æè¿çç¹ï¼å¸é/çº åï¼ãsimplifyPolyline(points, tolerance): 轨迹æ½ç¨ (RDP ç®æ³)ãisPointInPolygon(point, polygon): å¤æç¹æ¯å¦å¨å¤è¾¹å½¢å ãcalculatePathLength(points): 计ç®è·¯å¾æ»é¿åº¦ã
4. 常ç¨åè½å®ç°
- æ¾ç¤ºå®ä½ï¼è®¾ç½®
myLocationEnabledåfollowUserLocationã - æ·»å æ è®°ï¼å¨
MapViewå é¨åµå¥<Marker>ç»ä»¶ã - ç»å¶è·¯çº¿ï¼å¨
MapViewå é¨åµå¥<Polyline>ç»ä»¶ã - ç¹èåï¼ä½¿ç¨
<Cluster>ç»ä»¶å è£¹æ°æ®æºï¼éè¿clusterStyleå®å¶æ ·å¼ã
å¿«éæ¨¡å¼
â åºæ¯ 1ï¼æç®å°å¾æ¾ç¤º
import { MapView } from 'expo-gaode-map';
export default function App() {
return (
<MapView
style={{ flex: 1 }}
mapType={0} // 0: Standard, 1: Satellite
initialCameraPosition={{
target: { latitude: 39.909, longitude: 116.397 }, // å京天å®é¨
zoom: 10
}}
/>
);
}
â åºæ¯ 2ï¼å®ä½ä¸ç¨æ·è¿½è¸ª
<MapView
style={{ flex: 1 }}
myLocationEnabled={true} // æ¾ç¤ºèç¹
followUserLocation={true} // è·éç¨æ·ç§»å¨
onLocation={(e) => {
console.log('å½ååæ :', e.nativeEvent);
}}
/>
â åºæ¯ 3ï¼é«æ§è½ç¹èå (Cluster)
import { Cluster } from 'expo-gaode-map';
<Cluster
points={[
{ latitude: 39.9, longitude: 116.4 },
{ latitude: 39.8, longitude: 116.3 },
// ... æ´å¤ç¹
]}
radius={30} // èååå¾
clusterStyle={{
backgroundColor: '#4285F4',
borderRadius: 15,
justifyContent: 'center',
alignItems: 'center'
}}
clusterTextStyle={{ color: '#FFFFFF', fontSize: 12 }}
onClusterPress={(e) => console.log('ç¹å»èåç°:', e.nativeEvent)}
/>
â åºæ¯ 4ï¼ä½¿ç¨åçå ä½è®¡ç® (æ¨è)
import { ExpoGaodeMapModule } from 'expo-gaode-map';
// çº åï¼è·åè·¯å¾ä¸ç¦»å½åç¹æè¿çç¹
const result = ExpoGaodeMapModule.getNearestPointOnPath(polylinePoints, userLocation);
if (result) {
console.log('å¸éåçåæ :', result.latitude, result.longitude);
console.log('è·ç¦»è·¯å¾çè·ç¦»:', result.distanceMeters);
}
// 轨迹æ½ç¨
const simplified = ExpoGaodeMapModule.simplifyPolyline(rawPoints, 5); // 5米容差
ð¡ï¸ ç±»åå®å ¨æä½³å®è·µ
æ¬åºæä¾äºå®æ´ç TypeScript å®ä¹ï¼è¯·åè ç±»åå®ä¹ææ¡£ äºè§£è¯¦æ ã
æ ¸å¿ååï¼è¯·å¿ä½¿ç¨ anyï¼å§ç»å¯¼å
¥å¹¶ä½¿ç¨æ£ç¡®çç±»åï¼å¦ LatLng, CameraPosition, MapType çï¼ã