expo-gaode-map 1.0.8 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/src/main/java/expo/modules/gaodemap/managers/OverlayManager.kt +24 -6
- package/android/src/main/java/expo/modules/gaodemap/managers/UIManager.kt +6 -2
- package/android/src/main/java/expo/modules/gaodemap/overlays/CircleView.kt +6 -3
- package/android/src/main/java/expo/modules/gaodemap/overlays/MarkerView.kt +288 -26
- package/android/src/main/java/expo/modules/gaodemap/overlays/MarkerViewModule.kt +16 -0
- package/android/src/main/java/expo/modules/gaodemap/utils/ColorParser.kt +25 -0
- package/build/components/overlays/Circle.d.ts +2 -1
- package/build/components/overlays/Circle.d.ts.map +1 -1
- package/build/components/overlays/Circle.js +39 -0
- package/build/components/overlays/Circle.js.map +1 -1
- package/build/components/overlays/Marker.js +19 -3
- package/build/components/overlays/Marker.js.map +1 -1
- package/build/types/location.types.d.ts +4 -0
- package/build/types/location.types.d.ts.map +1 -1
- package/build/types/location.types.js.map +1 -1
- package/build/types/overlays.types.d.ts +20 -1
- package/build/types/overlays.types.d.ts.map +1 -1
- package/build/types/overlays.types.js.map +1 -1
- package/docs/API.en.md +14 -4
- package/docs/API.md +52 -4
- package/docs/EXAMPLES.en.md +58 -1
- package/docs/EXAMPLES.md +208 -1
- package/ios/ExpoGaodeMapView.swift +17 -0
- package/ios/overlays/CircleViewModule.swift +0 -2
- package/ios/overlays/MarkerView.swift +177 -27
- package/ios/overlays/MarkerViewModule.swift +8 -0
- package/ios/overlays/PolygonViewModule.swift +0 -2
- package/ios/overlays/PolylineViewModule.swift +0 -2
- package/ios/utils/ColorParser.swift +45 -0
- package/package.json +3 -2
- package/src/components/overlays/Circle.tsx +48 -0
- package/src/components/overlays/Marker.tsx +27 -7
- package/src/types/location.types.ts +5 -0
- package/src/types/overlays.types.ts +23 -1
|
@@ -14,6 +14,15 @@ export default function Marker(props) {
|
|
|
14
14
|
function MarkerDeclarative(props) {
|
|
15
15
|
const eventManager = React.useContext(MarkerEventContext);
|
|
16
16
|
const markerIdRef = React.useRef(`marker_${Date.now()}_${Math.random()}`);
|
|
17
|
+
// 根据是否有 children 来决定使用哪个尺寸属性
|
|
18
|
+
// 有 children:使用 customViewWidth/customViewHeight(默认 80x30)
|
|
19
|
+
// 无 children:使用 iconWidth/iconHeight(用于自定义图标)
|
|
20
|
+
const containerWidth = props.children
|
|
21
|
+
? (props.customViewWidth && props.customViewWidth > 0 ? props.customViewWidth : 80)
|
|
22
|
+
: (props.iconWidth || 0);
|
|
23
|
+
const containerHeight = props.children
|
|
24
|
+
? (props.customViewHeight && props.customViewHeight > 0 ? props.customViewHeight : 30)
|
|
25
|
+
: (props.iconHeight || 0);
|
|
17
26
|
React.useEffect(() => {
|
|
18
27
|
if (eventManager) {
|
|
19
28
|
eventManager.register(markerIdRef.current, {
|
|
@@ -28,8 +37,12 @@ function MarkerDeclarative(props) {
|
|
|
28
37
|
eventManager.unregister(markerIdRef.current);
|
|
29
38
|
}
|
|
30
39
|
};
|
|
31
|
-
}, [props.onPress, props.onDragStart, props.onDrag, props.onDragEnd]);
|
|
32
|
-
return (<NativeMarkerView position={props.position} title={props.title}
|
|
40
|
+
}, [eventManager, props.onPress, props.onDragStart, props.onDrag, props.onDragEnd]);
|
|
41
|
+
return (<NativeMarkerView position={props.position} title={props.title} snippet={props.snippet} draggable={props.draggable} icon={props.icon} iconWidth={props.iconWidth || 0} // 传递原始的 iconWidth(用于自定义图标)
|
|
42
|
+
iconHeight={props.iconHeight || 0} // 传递原始的 iconHeight(用于自定义图标)
|
|
43
|
+
customViewWidth={containerWidth} // 新增:自定义视图宽度
|
|
44
|
+
customViewHeight={containerHeight} // 新增:自定义视图高度
|
|
45
|
+
pinColor={props.pinColor} animatesDrop={props.animatesDrop} centerOffset={props.centerOffset} opacity={props.opacity} flat={props.flat} zIndex={props.zIndex} anchor={props.anchor} style={{ width: containerWidth, height: containerHeight }}>
|
|
33
46
|
{props.children}
|
|
34
47
|
</NativeMarkerView>);
|
|
35
48
|
}
|
|
@@ -85,7 +98,7 @@ function MarkerImperative(props) {
|
|
|
85
98
|
onDragEnd: props.onDragEnd,
|
|
86
99
|
});
|
|
87
100
|
}
|
|
88
|
-
}, [props.onPress, props.onDragStart, props.onDrag, props.onDragEnd]);
|
|
101
|
+
}, [eventManager, props.onPress, props.onDragStart, props.onDrag, props.onDragEnd]);
|
|
89
102
|
React.useEffect(() => {
|
|
90
103
|
if (markerIdRef.current && mapRef?.current) {
|
|
91
104
|
const processedProps = { ...props };
|
|
@@ -96,6 +109,7 @@ function MarkerImperative(props) {
|
|
|
96
109
|
mapRef.current.updateMarker(markerIdRef.current, processedProps);
|
|
97
110
|
}
|
|
98
111
|
}, [
|
|
112
|
+
mapRef,
|
|
99
113
|
props.position?.latitude,
|
|
100
114
|
props.position?.longitude,
|
|
101
115
|
props.title,
|
|
@@ -103,6 +117,8 @@ function MarkerImperative(props) {
|
|
|
103
117
|
props.icon,
|
|
104
118
|
props.iconWidth,
|
|
105
119
|
props.iconHeight,
|
|
120
|
+
props.customViewWidth,
|
|
121
|
+
props.customViewHeight,
|
|
106
122
|
props.pinColor
|
|
107
123
|
]);
|
|
108
124
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Marker.js","sourceRoot":"","sources":["../../../src/components/overlays/Marker.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { Image } from 'react-native';\nimport { requireNativeViewManager } from 'expo-modules-core';\nimport { MapContext, MarkerEventContext } from '../../ExpoGaodeMapView';\nimport type { MarkerProps } from '../../types';\n\nconst NativeMarkerView = requireNativeViewManager('MarkerView');\n\nexport default function Marker(props: MarkerProps) {\n // 如果有 children,使用声明式 API\n if (props.children) {\n return <MarkerDeclarative {...props} />;\n }\n // 否则使用命令式 API\n return <MarkerImperative {...props} />;\n}\n\nfunction MarkerDeclarative(props: MarkerProps) {\n const eventManager = React.useContext(MarkerEventContext);\n const markerIdRef = React.useRef(`marker_${Date.now()}_${Math.random()}`);\n \n React.useEffect(() => {\n if (eventManager) {\n eventManager.register(markerIdRef.current, {\n onPress: props.onPress,\n onDragStart: props.onDragStart,\n onDrag: props.onDrag,\n onDragEnd: props.onDragEnd,\n });\n }\n return () => {\n if (eventManager) {\n eventManager.unregister(markerIdRef.current);\n }\n };\n }, [props.onPress, props.onDragStart, props.onDrag, props.onDragEnd]);\n \n return (\n <NativeMarkerView\n position={props.position}\n title={props.title}\n draggable={props.draggable}\n opacity={props.opacity}\n anchor={props.anchor}\n flat={props.flat}\n zIndex={props.zIndex}\n onPress={props.onPress}\n onDragStart={props.onDragStart}\n onDrag={props.onDrag}\n onDragEnd={props.onDragEnd}\n >\n {props.children}\n </NativeMarkerView>\n );\n}\n\nfunction MarkerImperative(props: MarkerProps) {\n const mapRef = React.useContext(MapContext);\n const eventManager = React.useContext(MarkerEventContext);\n const markerIdRef = React.useRef<string | null>(null);\n const propsRef = React.useRef(props);\n \n React.useEffect(() => {\n propsRef.current = props;\n }, [props]);\n \n React.useEffect(() => {\n const checkAndAdd = () => {\n if (!mapRef?.current) {\n setTimeout(checkAndAdd, 50);\n return;\n }\n \n const markerId = `marker_${Date.now()}_${Math.random()}`;\n markerIdRef.current = markerId;\n \n if (eventManager) {\n eventManager.register(markerId, {\n onPress: props.onPress,\n onDragStart: props.onDragStart,\n onDrag: props.onDrag,\n onDragEnd: props.onDragEnd,\n });\n }\n \n const processedProps = { ...propsRef.current };\n if (processedProps.icon && typeof processedProps.icon === 'number') {\n const resolved = Image.resolveAssetSource(processedProps.icon);\n processedProps.icon = resolved;\n }\n \n mapRef.current.addMarker(markerId, processedProps);\n };\n \n checkAndAdd();\n \n return () => {\n if (markerIdRef.current) {\n if (eventManager) {\n eventManager.unregister(markerIdRef.current);\n }\n if (mapRef?.current) {\n mapRef.current.removeMarker(markerIdRef.current);\n }\n }\n };\n }, []);\n\n React.useEffect(() => {\n if (markerIdRef.current && eventManager) {\n eventManager.register(markerIdRef.current, {\n onPress: props.onPress,\n onDragStart: props.onDragStart,\n onDrag: props.onDrag,\n onDragEnd: props.onDragEnd,\n });\n }\n }, [props.onPress, props.onDragStart, props.onDrag, props.onDragEnd]);\n\n React.useEffect(() => {\n if (markerIdRef.current && mapRef?.current) {\n const processedProps = { ...props };\n if (processedProps.icon && typeof processedProps.icon === 'number') {\n const resolved = Image.resolveAssetSource(processedProps.icon);\n processedProps.icon = resolved;\n }\n mapRef.current.updateMarker(markerIdRef.current, processedProps);\n }\n }, [\n props.position?.latitude,\n props.position?.longitude,\n props.title,\n props.draggable,\n props.icon,\n props.iconWidth,\n props.iconHeight,\n props.pinColor\n ]);\n \n return null;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Marker.js","sourceRoot":"","sources":["../../../src/components/overlays/Marker.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { Image } from 'react-native';\nimport { requireNativeViewManager } from 'expo-modules-core';\nimport { MapContext, MarkerEventContext } from '../../ExpoGaodeMapView';\nimport type { MarkerProps } from '../../types';\n\nconst NativeMarkerView = requireNativeViewManager('MarkerView');\n\nexport default function Marker(props: MarkerProps) {\n // 如果有 children,使用声明式 API\n if (props.children) {\n return <MarkerDeclarative {...props} />;\n }\n // 否则使用命令式 API\n return <MarkerImperative {...props} />;\n}\n\nfunction MarkerDeclarative(props: MarkerProps) {\n const eventManager = React.useContext(MarkerEventContext);\n const markerIdRef = React.useRef(`marker_${Date.now()}_${Math.random()}`);\n \n // 根据是否有 children 来决定使用哪个尺寸属性\n // 有 children:使用 customViewWidth/customViewHeight(默认 80x30)\n // 无 children:使用 iconWidth/iconHeight(用于自定义图标)\n const containerWidth = props.children\n ? (props.customViewWidth && props.customViewWidth > 0 ? props.customViewWidth : 80)\n : (props.iconWidth || 0);\n const containerHeight = props.children\n ? (props.customViewHeight && props.customViewHeight > 0 ? props.customViewHeight : 30)\n : (props.iconHeight || 0);\n \n React.useEffect(() => {\n if (eventManager) {\n eventManager.register(markerIdRef.current, {\n onPress: props.onPress,\n onDragStart: props.onDragStart,\n onDrag: props.onDrag,\n onDragEnd: props.onDragEnd,\n });\n }\n return () => {\n if (eventManager) {\n eventManager.unregister(markerIdRef.current);\n }\n };\n }, [eventManager, props.onPress, props.onDragStart, props.onDrag, props.onDragEnd]);\n \n return (\n <NativeMarkerView\n position={props.position}\n title={props.title}\n snippet={props.snippet}\n draggable={props.draggable}\n icon={props.icon}\n iconWidth={props.iconWidth || 0} // 传递原始的 iconWidth(用于自定义图标)\n iconHeight={props.iconHeight || 0} // 传递原始的 iconHeight(用于自定义图标)\n customViewWidth={containerWidth} // 新增:自定义视图宽度\n customViewHeight={containerHeight} // 新增:自定义视图高度\n pinColor={props.pinColor}\n animatesDrop={props.animatesDrop}\n centerOffset={props.centerOffset}\n opacity={props.opacity}\n flat={props.flat}\n zIndex={props.zIndex}\n anchor={props.anchor}\n style={{ width: containerWidth, height: containerHeight }}\n >\n {props.children}\n </NativeMarkerView>\n );\n}\n\nfunction MarkerImperative(props: MarkerProps) {\n const mapRef = React.useContext(MapContext);\n const eventManager = React.useContext(MarkerEventContext);\n const markerIdRef = React.useRef<string | null>(null);\n const propsRef = React.useRef(props);\n \n React.useEffect(() => {\n propsRef.current = props;\n }, [props]);\n \n React.useEffect(() => {\n const checkAndAdd = () => {\n if (!mapRef?.current) {\n setTimeout(checkAndAdd, 50);\n return;\n }\n \n const markerId = `marker_${Date.now()}_${Math.random()}`;\n markerIdRef.current = markerId;\n \n if (eventManager) {\n eventManager.register(markerId, {\n onPress: props.onPress,\n onDragStart: props.onDragStart,\n onDrag: props.onDrag,\n onDragEnd: props.onDragEnd,\n });\n }\n \n const processedProps = { ...propsRef.current };\n if (processedProps.icon && typeof processedProps.icon === 'number') {\n const resolved = Image.resolveAssetSource(processedProps.icon);\n processedProps.icon = resolved;\n }\n \n mapRef.current.addMarker(markerId, processedProps);\n };\n \n checkAndAdd();\n \n return () => {\n if (markerIdRef.current) {\n if (eventManager) {\n eventManager.unregister(markerIdRef.current);\n }\n if (mapRef?.current) {\n mapRef.current.removeMarker(markerIdRef.current);\n }\n }\n };\n }, []);\n\n React.useEffect(() => {\n if (markerIdRef.current && eventManager) {\n eventManager.register(markerIdRef.current, {\n onPress: props.onPress,\n onDragStart: props.onDragStart,\n onDrag: props.onDrag,\n onDragEnd: props.onDragEnd,\n });\n }\n }, [eventManager, props.onPress, props.onDragStart, props.onDrag, props.onDragEnd]);\n\n React.useEffect(() => {\n if (markerIdRef.current && mapRef?.current) {\n const processedProps = { ...props };\n if (processedProps.icon && typeof processedProps.icon === 'number') {\n const resolved = Image.resolveAssetSource(processedProps.icon);\n processedProps.icon = resolved;\n }\n mapRef.current.updateMarker(markerIdRef.current, processedProps);\n }\n }, [\n mapRef,\n props.position?.latitude,\n props.position?.longitude,\n props.title,\n props.draggable,\n props.icon,\n props.iconWidth,\n props.iconHeight,\n props.customViewWidth,\n props.customViewHeight,\n props.pinColor\n ]);\n \n return null;\n}\n\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"location.types.d.ts","sourceRoot":"","sources":["../../src/types/location.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,MAAM;IACzC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;
|
|
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;
|
|
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"]}
|
|
@@ -18,10 +18,12 @@ export interface MarkerProps {
|
|
|
18
18
|
icon?: string | ImageSourcePropType;
|
|
19
19
|
/**
|
|
20
20
|
* 图标宽度(像素)
|
|
21
|
+
* 仅在使用 icon 属性时有效
|
|
21
22
|
*/
|
|
22
23
|
iconWidth?: number;
|
|
23
24
|
/**
|
|
24
25
|
* 图标高度(像素)
|
|
26
|
+
* 仅在使用 icon 属性时有效
|
|
25
27
|
*/
|
|
26
28
|
iconHeight?: number;
|
|
27
29
|
/**
|
|
@@ -77,9 +79,21 @@ export interface MarkerProps {
|
|
|
77
79
|
pinColor?: 'red' | 'green' | 'purple';
|
|
78
80
|
/**
|
|
79
81
|
* 自定义视图
|
|
80
|
-
*
|
|
82
|
+
* 当使用 children 时,会将 React Native 组件渲染为图片显示在地图上
|
|
81
83
|
*/
|
|
82
84
|
children?: React.ReactNode;
|
|
85
|
+
/**
|
|
86
|
+
* 自定义视图宽度(像素)
|
|
87
|
+
* 仅在使用 children 属性时有效
|
|
88
|
+
* @default 80
|
|
89
|
+
*/
|
|
90
|
+
customViewWidth?: number;
|
|
91
|
+
/**
|
|
92
|
+
* 自定义视图高度(像素)
|
|
93
|
+
* 仅在使用 children 属性时有效
|
|
94
|
+
* @default 30
|
|
95
|
+
*/
|
|
96
|
+
customViewHeight?: number;
|
|
83
97
|
/**
|
|
84
98
|
* 点击事件
|
|
85
99
|
*/
|
|
@@ -212,6 +226,11 @@ export interface CircleProps {
|
|
|
212
226
|
* 点击事件
|
|
213
227
|
*/
|
|
214
228
|
onPress?: () => void;
|
|
229
|
+
/**
|
|
230
|
+
* 自定义子元素
|
|
231
|
+
* 暂不支持
|
|
232
|
+
*/
|
|
233
|
+
children?: React.ReactNode;
|
|
215
234
|
}
|
|
216
235
|
/**
|
|
217
236
|
* 热力图属性
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlays.types.d.ts","sourceRoot":"","sources":["../../src/types/overlays.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAAC;IAEpC
|
|
1
|
+
{"version":3,"file":"overlays.types.d.ts","sourceRoot":"","sources":["../../src/types/overlays.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlays.types.js","sourceRoot":"","sources":["../../src/types/overlays.types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * 高德地图覆盖物相关类型定义\n * 基于 Expo Modules API\n */\n\nimport type { ImageSourcePropType, ViewStyle } from 'react-native';\nimport type { ColorValue, LatLng, Point } from './common.types';\n\n/**\n * 标记点属性\n */\nexport interface MarkerProps {\n /**\n * 坐标\n */\n position: LatLng;\n\n /**\n * 图标\n */\n icon?: string | ImageSourcePropType;\n\n /**\n * 图标宽度(像素)\n */\n iconWidth?: number;\n\n /**\n * 图标高度(像素)\n */\n iconHeight?: number;\n\n /**\n * 标题\n */\n title?: string;\n\n /**\n * 描述\n */\n snippet?: string;\n\n /**\n * 透明度 [0, 1]\n * @platform android\n * @note iOS 不支持\n */\n opacity?: number;\n\n /**\n * 是否可拖拽\n */\n draggable?: boolean;\n\n /**\n * 是否平贴地图\n * @platform android\n * @note iOS 不支持\n */\n flat?: boolean;\n\n /**\n * 层级\n * @platform android\n * @note iOS 不支持 (使用 displayPriority)\n */\n zIndex?: number;\n\n /**\n * 覆盖物锚点比例\n * @platform android\n * @note iOS 使用 centerOffset\n */\n anchor?: Point;\n\n /**\n * 覆盖物偏移位置\n * @platform ios\n */\n centerOffset?: Point;\n\n /**\n * 是否显示动画\n * @platform ios\n */\n animatesDrop?: boolean;\n\n /**\n * 大头针颜色\n * @platform ios\n */\n pinColor?: 'red' | 'green' | 'purple';\n\n /**\n * 自定义视图\n *
|
|
1
|
+
{"version":3,"file":"overlays.types.js","sourceRoot":"","sources":["../../src/types/overlays.types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * 高德地图覆盖物相关类型定义\n * 基于 Expo Modules API\n */\n\nimport type { ImageSourcePropType, ViewStyle } from 'react-native';\nimport type { ColorValue, LatLng, Point } from './common.types';\n\n/**\n * 标记点属性\n */\nexport interface MarkerProps {\n /**\n * 坐标\n */\n position: LatLng;\n\n /**\n * 图标\n */\n icon?: string | ImageSourcePropType;\n\n /**\n * 图标宽度(像素)\n * 仅在使用 icon 属性时有效\n */\n iconWidth?: number;\n\n /**\n * 图标高度(像素)\n * 仅在使用 icon 属性时有效\n */\n iconHeight?: number;\n\n /**\n * 标题\n */\n title?: string;\n\n /**\n * 描述\n */\n snippet?: string;\n\n /**\n * 透明度 [0, 1]\n * @platform android\n * @note iOS 不支持\n */\n opacity?: number;\n\n /**\n * 是否可拖拽\n */\n draggable?: boolean;\n\n /**\n * 是否平贴地图\n * @platform android\n * @note iOS 不支持\n */\n flat?: boolean;\n\n /**\n * 层级\n * @platform android\n * @note iOS 不支持 (使用 displayPriority)\n */\n zIndex?: number;\n\n /**\n * 覆盖物锚点比例\n * @platform android\n * @note iOS 使用 centerOffset\n */\n anchor?: Point;\n\n /**\n * 覆盖物偏移位置\n * @platform ios\n */\n centerOffset?: Point;\n\n /**\n * 是否显示动画\n * @platform ios\n */\n animatesDrop?: boolean;\n\n /**\n * 大头针颜色\n * @platform ios\n */\n pinColor?: 'red' | 'green' | 'purple';\n\n /**\n * 自定义视图\n * 当使用 children 时,会将 React Native 组件渲染为图片显示在地图上\n */\n children?: React.ReactNode;\n\n /**\n * 自定义视图宽度(像素)\n * 仅在使用 children 属性时有效 \n * @default 80\n */\n customViewWidth?: number;\n\n /**\n * 自定义视图高度(像素)\n * 仅在使用 children 属性时有效\n * @default 30\n */\n customViewHeight?: number;\n\n /**\n * 点击事件\n */\n onPress?: () => void;\n\n /**\n * 拖拽开始事件\n */\n onDragStart?: () => void;\n\n /**\n * 拖拽中事件\n */\n onDrag?: () => void;\n\n /**\n * 拖拽结束事件\n */\n onDragEnd?: (event: { nativeEvent: LatLng }) => void;\n}\n\n/**\n * 折线属性\n */\nexport interface PolylineProps {\n /**\n * 节点坐标数组\n */\n points: LatLng[];\n\n /**\n * 线宽\n */\n width?: number;\n\n /**\n * 线条颜色\n */\n color?: ColorValue;\n\n /**\n * 层级\n */\n zIndex?: number;\n\n /**\n * 分段颜色\n */\n colors?: ColorValue[];\n\n /**\n * 是否使用渐变色\n * @platform android\n * @note iOS 不支持\n */\n gradient?: boolean;\n\n /**\n * 是否绘制大地线\n * @platform android\n * @note iOS 不支持\n */\n geodesic?: boolean;\n\n /**\n * 是否绘制虚线\n * @platform android\n * @note iOS 不支持\n */\n dotted?: boolean;\n\n /**\n * 纹理图片\n * 支持网络图片(http/https)、本地文件(file://)或资源名称\n */\n texture?: string;\n\n /**\n * 点击事件\n */\n onPress?: () => void;\n}\n\n/**\n * 多边形属性\n */\nexport interface PolygonProps {\n /**\n * 节点坐标数组\n */\n points: LatLng[];\n\n /**\n * 边线宽度\n */\n strokeWidth?: number;\n\n /**\n * 边线颜色\n */\n strokeColor?: ColorValue;\n\n /**\n * 填充颜色\n */\n fillColor?: ColorValue;\n\n /**\n * 层级\n */\n zIndex?: number;\n\n /**\n * 点击事件\n */\n onPress?: () => void;\n}\n\n/**\n * 圆形属性\n */\nexport interface CircleProps {\n /**\n * 圆心坐标\n */\n center: LatLng;\n\n /**\n * 半径(米)\n */\n radius: number;\n\n /**\n * 边线宽度\n */\n strokeWidth?: number;\n\n /**\n * 边线颜色\n */\n strokeColor?: ColorValue;\n\n /**\n * 填充颜色\n */\n fillColor?: ColorValue;\n\n /**\n * 层级\n */\n zIndex?: number;\n\n /**\n * 点击事件\n */\n onPress?: () => void;\n\n /**\n * 自定义子元素\n * 暂不支持\n */\n children?: React.ReactNode;\n\n}\n\n/**\n * 热力图属性\n */\nexport interface HeatMapProps {\n /**\n * 热力点数据\n */\n data: LatLng[];\n\n /**\n * 热力半径(米)\n */\n radius?: number;\n\n /**\n * 透明度 [0, 1]\n */\n opacity?: number;\n}\n\n/**\n * 海量点标记项\n */\nexport interface MultiPointItem extends LatLng {\n /**\n * 唯一标识\n */\n id?: string | number;\n\n /**\n * 自定义数据\n */\n data?: any;\n}\n\n/**\n * 海量点属性\n */\nexport interface MultiPointProps {\n /**\n * 点集合\n */\n items: MultiPointItem[];\n\n /**\n * 图标\n */\n icon?: ImageSourcePropType;\n\n /**\n * 点击事件\n */\n onPress?: (event: { nativeEvent: { index: number; item: MultiPointItem } }) => void;\n}\n\n/**\n * 聚合点参数\n */\nexport interface ClusterParams {\n /**\n * 唯一标识\n */\n id: number;\n\n /**\n * 包含的标记点数量\n */\n count: number;\n\n /**\n * 聚合点坐标\n */\n position: LatLng;\n}\n\n/**\n * 聚合点项\n */\nexport interface ClusterPoint {\n /**\n * 坐标\n */\n position: LatLng;\n\n /**\n * 自定义数据\n */\n properties?: any;\n}\n\n/**\n * 聚合图层属性\n */\nexport interface ClusterProps {\n /**\n * 聚合半径\n */\n radius?: number;\n\n /**\n * 聚合点样式\n */\n clusterStyle?: ViewStyle;\n\n /**\n * 聚合点文本样式\n */\n clusterTextStyle?: ViewStyle;\n\n /**\n * 坐标点列表\n */\n points: ClusterPoint[];\n\n /**\n * 渲染标记点\n */\n renderMarker: (item: ClusterPoint) => React.ReactNode;\n\n /**\n * 渲染聚合点\n */\n renderCluster?: (params: ClusterParams) => React.ReactNode;\n\n /**\n * 聚合点点击事件\n */\n onPress?: (params: ClusterParams) => void;\n}\n"]}
|
package/docs/API.en.md
CHANGED
|
@@ -326,8 +326,10 @@ Based on AMap official recommendations, this library uses the following default
|
|
|
326
326
|
| `snippet` | `string` | All | - | Description |
|
|
327
327
|
| `draggable` | `boolean` | All | `false` | Draggable |
|
|
328
328
|
| `icon` | `string \| ImageSourcePropType` | All | - | Custom icon |
|
|
329
|
-
| `iconWidth` | `number` | All | `40` | Icon width (pt/dp) |
|
|
330
|
-
| `iconHeight` | `number` | All | `40` | Icon height (pt/dp) |
|
|
329
|
+
| `iconWidth` | `number` | All | `40` | Icon width (pt/dp), only for `icon` property |
|
|
330
|
+
| `iconHeight` | `number` | All | `40` | Icon height (pt/dp), only for `icon` property |
|
|
331
|
+
| `customViewWidth` | `number` | All | `80` | Custom view width (pt/dp), only for `children` property |
|
|
332
|
+
| `customViewHeight` | `number` | All | `30` | Custom view height (pt/dp), only for `children` property |
|
|
331
333
|
| `opacity` | `number` | Android only | `1.0` | Opacity [0, 1] |
|
|
332
334
|
| `flat` | `boolean` | Android only | `false` | Flat on map |
|
|
333
335
|
| `zIndex` | `number` | Android only | `0` | Z-index |
|
|
@@ -347,12 +349,20 @@ Based on AMap official recommendations, this library uses the following default
|
|
|
347
349
|
|
|
348
350
|
> **⚠️ Important**: Event callbacks only work in **declarative usage**. Markers added via imperative API (`addMarker`) cannot trigger these events.
|
|
349
351
|
|
|
350
|
-
####
|
|
352
|
+
#### Usage Notes
|
|
351
353
|
|
|
354
|
+
**Custom Icon (icon property):**
|
|
352
355
|
- **Icon Format**: Supports network images (http/https), local files (use `Image.resolveAssetSource()`)
|
|
353
|
-
- **Size
|
|
356
|
+
- **Size Control**: Use `iconWidth` and `iconHeight` to control icon size
|
|
357
|
+
- **Size Unit**: Uses points (pt/dp), auto-scales on different density screens
|
|
354
358
|
- **Anchor**: `anchor` defines icon position relative to coordinate, `{x: 0.5, y: 1.0}` means bottom-center aligned
|
|
355
359
|
|
|
360
|
+
**Custom View (children property):**
|
|
361
|
+
- **Size Control**: Use `customViewWidth` and `customViewHeight` to control custom view size
|
|
362
|
+
- **Default Size**: 80x30 pt/dp
|
|
363
|
+
- **Important**: `iconWidth/iconHeight` only apply to `icon` property, not `children`
|
|
364
|
+
- Recommend explicitly setting size to ensure consistent display across devices
|
|
365
|
+
|
|
356
366
|
## Type Definitions
|
|
357
367
|
|
|
358
368
|
### MapType
|
package/docs/API.md
CHANGED
|
@@ -326,8 +326,11 @@ configure({
|
|
|
326
326
|
| `snippet` | `string` | 全平台 | - | 描述信息 |
|
|
327
327
|
| `draggable` | `boolean` | 全平台 | `false` | 是否可拖拽 |
|
|
328
328
|
| `icon` | `string \| ImageSourcePropType` | 全平台 | - | 自定义图标 |
|
|
329
|
-
| `iconWidth` | `number` | 全平台 | `40` | 图标宽度(点/dp
|
|
330
|
-
| `iconHeight` | `number` | 全平台 | `40` | 图标高度(点/dp
|
|
329
|
+
| `iconWidth` | `number` | 全平台 | `40` | 图标宽度(点/dp),仅在使用 `icon` 时有效 |
|
|
330
|
+
| `iconHeight` | `number` | 全平台 | `40` | 图标高度(点/dp),仅在使用 `icon` 时有效 |
|
|
331
|
+
| `children` | `React.ReactNode` | 全平台 | - | 自定义视图内容 |
|
|
332
|
+
| `customViewWidth` | `number` | 全平台 | `80` | 自定义视图宽度(点/dp),仅在使用 `children` 时有效 |
|
|
333
|
+
| `customViewHeight` | `number` | 全平台 | `30` | 自定义视图高度(点/dp),仅在使用 `children` 时有效 |
|
|
331
334
|
| `opacity` | `number` | 仅 Android | `1.0` | 透明度 [0, 1] |
|
|
332
335
|
| `flat` | `boolean` | 仅 Android | `false` | 是否平贴地图 |
|
|
333
336
|
| `zIndex` | `number` | 仅 Android | `0` | 层级 |
|
|
@@ -347,12 +350,57 @@ configure({
|
|
|
347
350
|
|
|
348
351
|
> **⚠️ 重要提示**:事件回调仅在**声明式用法**中有效。使用命令式 API(`addMarker`)添加的标记点无法触发这些事件。
|
|
349
352
|
|
|
350
|
-
####
|
|
353
|
+
#### 使用方式
|
|
351
354
|
|
|
355
|
+
##### 1. 默认大头针
|
|
356
|
+
不传递任何图标属性,显示默认的红色大头针(iOS)或默认标记(Android)。
|
|
357
|
+
|
|
358
|
+
##### 2. 自定义图标
|
|
359
|
+
通过 `icon` 属性指定图标图片:
|
|
360
|
+
|
|
361
|
+
```tsx
|
|
362
|
+
<Marker
|
|
363
|
+
position={{ latitude: 39.9, longitude: 116.4 }}
|
|
364
|
+
icon={require('./assets/custom-icon.png')}
|
|
365
|
+
iconWidth={40}
|
|
366
|
+
iconHeight={60}
|
|
367
|
+
title="自定义图标"
|
|
368
|
+
/>
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
**自定义图标特点:**
|
|
352
372
|
- **图标格式**:支持网络图片(http/https)、本地文件(使用 `Image.resolveAssetSource()`)
|
|
353
|
-
-
|
|
373
|
+
- **尺寸控制**:使用 `iconWidth` 和 `iconHeight` 设置图标显示尺寸(点/dp)
|
|
354
374
|
- **锚点**:`anchor` 定义图标相对于坐标点的位置,`{x: 0.5, y: 1.0}` 表示图标底部中心对齐坐标点
|
|
355
375
|
|
|
376
|
+
##### 3. 自定义视图(children)⭐ 推荐
|
|
377
|
+
通过 `children` 属性传递自定义 React Native 组件,可以实现完全自定义的标记外观:
|
|
378
|
+
|
|
379
|
+
```tsx
|
|
380
|
+
<Marker
|
|
381
|
+
position={{ latitude: 39.9, longitude: 116.4 }}
|
|
382
|
+
customViewWidth={200}
|
|
383
|
+
customViewHeight={50}
|
|
384
|
+
>
|
|
385
|
+
<View style={styles.markerContainer}>
|
|
386
|
+
<Text style={styles.markerText}>自定义内容</Text>
|
|
387
|
+
</View>
|
|
388
|
+
</Marker>
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
**自定义视图特点:**
|
|
392
|
+
- ✅ 支持任意 React Native 组件(View、Text、Image 等)
|
|
393
|
+
- ✅ 完全支持样式(backgroundColor、borderRadius、padding、flexbox 等)
|
|
394
|
+
- ✅ 使用 `customViewWidth` 和 `customViewHeight` 控制最终渲染尺寸(默认 80x30)
|
|
395
|
+
- ✅ 自动将 React 组件转换为图片显示在地图上
|
|
396
|
+
- ⚠️ **仅支持声明式用法**(`<Marker>` 组件),不支持命令式 API(`addMarker`)
|
|
397
|
+
|
|
398
|
+
**尺寸说明:**
|
|
399
|
+
- `customViewWidth` 和 `customViewHeight` 定义最终在地图上显示的尺寸
|
|
400
|
+
- 子视图会被强制调整为该尺寸并渲染为图片
|
|
401
|
+
- 建议明确指定尺寸以确保在不同设备上显示一致
|
|
402
|
+
- **注意**:`iconWidth` 和 `iconHeight` 仅用于自定义图标(`icon` 属性),不影响 `children`
|
|
403
|
+
|
|
356
404
|
## 类型定义
|
|
357
405
|
|
|
358
406
|
### MapType
|
package/docs/EXAMPLES.en.md
CHANGED
|
@@ -452,7 +452,7 @@ await mapRef.current?.removeCircle('circle1');
|
|
|
452
452
|
|
|
453
453
|
### Marker
|
|
454
454
|
|
|
455
|
-
**Declarative usage:**
|
|
455
|
+
**Declarative usage - Basic marker:**
|
|
456
456
|
```tsx
|
|
457
457
|
<MapView style={{ flex: 1 }}>
|
|
458
458
|
<Marker
|
|
@@ -466,6 +466,63 @@ await mapRef.current?.removeCircle('circle1');
|
|
|
466
466
|
</MapView>
|
|
467
467
|
```
|
|
468
468
|
|
|
469
|
+
**Declarative usage - Custom icon:**
|
|
470
|
+
```tsx
|
|
471
|
+
import { Image } from 'react-native';
|
|
472
|
+
|
|
473
|
+
const iconUri = Image.resolveAssetSource(require('./assets/marker-icon.png')).uri;
|
|
474
|
+
|
|
475
|
+
<MapView style={{ flex: 1 }}>
|
|
476
|
+
<Marker
|
|
477
|
+
position={{ latitude: 39.9, longitude: 116.4 }}
|
|
478
|
+
title="Custom Icon"
|
|
479
|
+
icon={iconUri}
|
|
480
|
+
iconWidth={50}
|
|
481
|
+
iconHeight={50}
|
|
482
|
+
onPress={() => console.log('Custom icon marker pressed')}
|
|
483
|
+
/>
|
|
484
|
+
</MapView>
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
**Declarative usage - Custom view:**
|
|
488
|
+
```tsx
|
|
489
|
+
import { View, Text, StyleSheet } from 'react-native';
|
|
490
|
+
|
|
491
|
+
<MapView style={{ flex: 1 }}>
|
|
492
|
+
<Marker
|
|
493
|
+
position={{ latitude: 39.9, longitude: 116.4 }}
|
|
494
|
+
customViewWidth={120}
|
|
495
|
+
customViewHeight={40}
|
|
496
|
+
onPress={() => console.log('Custom view marker pressed')}
|
|
497
|
+
>
|
|
498
|
+
<View style={styles.markerContainer}>
|
|
499
|
+
<Text style={styles.markerText}>Custom Content</Text>
|
|
500
|
+
</View>
|
|
501
|
+
</Marker>
|
|
502
|
+
</MapView>
|
|
503
|
+
|
|
504
|
+
const styles = StyleSheet.create({
|
|
505
|
+
markerContainer: {
|
|
506
|
+
backgroundColor: '#fff',
|
|
507
|
+
padding: 8,
|
|
508
|
+
borderRadius: 8,
|
|
509
|
+
borderWidth: 2,
|
|
510
|
+
borderColor: '#007AFF',
|
|
511
|
+
},
|
|
512
|
+
markerText: {
|
|
513
|
+
color: '#007AFF',
|
|
514
|
+
fontWeight: 'bold',
|
|
515
|
+
fontSize: 14,
|
|
516
|
+
},
|
|
517
|
+
});
|
|
518
|
+
```
|
|
519
|
+
|
|
520
|
+
> **Important Notes**:
|
|
521
|
+
> - **Custom Icon**: Use `icon` property with `iconWidth` and `iconHeight` to control icon size
|
|
522
|
+
> - **Custom View**: Use `children` with `customViewWidth` and `customViewHeight` to control custom view size
|
|
523
|
+
> - `iconWidth/iconHeight` only apply to `icon` property, not `children`
|
|
524
|
+
> - `customViewWidth/customViewHeight` only apply to `children` property, not `icon`
|
|
525
|
+
|
|
469
526
|
**Imperative usage:**
|
|
470
527
|
```tsx
|
|
471
528
|
await mapRef.current?.addMarker('marker1', {
|