UNPKG

react-native-anavi

Version:

react native amap navigation component, Android + iOS

302 lines (301 loc) 15.1 kB
/// <reference types="react" /> import { ViewProps, ImageSourcePropType } from 'react-native'; import type { MapStatus, MapType, Region, LatLng, Location, WeatherType } from '../types'; import Component from './component'; import Marker from './marker'; import Polyline from './polyline'; import MultiPoint from './multi-point'; import TexturePolyline from './texture-polyline'; import { DrivePath, RidePath, WalkPath } from '../route-view'; export interface UserLocationStyleProps { image?: ImageSourcePropType; fillColor?: string; strokeColor?: string; strokeWidth?: number; locationDotBgColor?: string; locationDotFillColor?: string; } export interface MapViewProps extends ViewProps { children?: any; /** * 天气效果 */ wheather?: WeatherType; /** * 地图类型 */ mapType?: MapType; /** * 地图中心 */ center?: LatLng; /** * 地图显示区域 */ region?: Region; /** * 缩放级别 */ zoomLevel?: number; /** * 倾斜角度,取值范围 [0, 60] */ rotation?: number; /** * 倾斜角度 */ tilt?: number; /** * 是否启用定位 */ locationEnabled?: boolean; userTrackingMode?: 'none' | 'follow' | 'followWithHeading'; /** * 定位间隔(ms),默认 2000 * * @platform android */ locationInterval?: number; /** * 定位的最小更新距离 * * @platform ios */ distanceFilter?: number; /** * 是否显示室内地图 */ showsIndoorMap?: boolean; /** * 是否显示室内地图楼层切换控件 * * TODO: 似乎并不能正常显示 */ showsIndoorSwitch?: boolean; /** * 是否显示3D建筑 */ showsBuildings?: boolean; /** * 是否显示文本标签 */ showsLabels?: boolean; /** * 是否显示指南针 */ showsCompass?: boolean; /** * 是否显示放大缩小按钮 * * @platform android */ showsZoomControls?: boolean; /** * 是否显示比例尺 */ showsScale?: boolean; /** * 是否显示定位按钮 * * @platform android */ showsLocationButton?: boolean; /** * 是否显示路况 */ showsTraffic?: boolean; /** * */ locationStyle?: UserLocationStyleProps; /** * 最大缩放级别 */ maxZoomLevel?: number; /** * 最小缩放级别 */ minZoomLevel?: number; /** * 限制地图只能显示某个矩形区域 */ limitRegion?: Region; /** * 是否启用缩放手势,用于放大缩小 */ zoomEnabled?: boolean; /** * 是否启用滑动手势,用于平移 */ scrollEnabled?: boolean; /** * 是否启用旋转手势,用于调整方向 */ rotateEnabled?: boolean; /** * 是否启用倾斜手势,用于改变视角 */ tiltEnabled?: boolean; /** * 点击事件 */ onClick?: (coordnate: LatLng) => void; /** * 长按事件 */ onLongClick?: (coordnate: LatLng) => void; /** * 地图状态改变事件,在动画结束后触发 */ onStatusChangeComplete?: (status: MapStatus) => void; /** * 定位事件 */ onLocation?: (location: Location) => void; /** * 动画取消事件 */ onAnimateCancel?: () => void; /** * 动画完成事件 */ onAnimateFinished?: () => void; } /** * @ignore */ export default class MapView extends Component<MapViewProps> { static propTypes: { wheather: import("prop-types").Requireable<number>; mapType: import("prop-types").Requireable<number>; locationEnabled: import("prop-types").Requireable<boolean>; userTrackingMode: import("prop-types").Requireable<string>; locationInterval: import("prop-types").Requireable<number>; locationStyle: import("prop-types").Requireable<import("prop-types").InferProps<{ image: import("prop-types").Requireable<number | object>; fillColor: import("prop-types").Requireable<string>; strokeColor: import("prop-types").Requireable<string>; strokeWidth: import("prop-types").Requireable<number>; locationDotBgColor: import("prop-types").Requireable<string>; locationDotFillColor: import("prop-types").Requireable<string>; enablePulseAnnimation: import("prop-types").Requireable<boolean>; showsHeadingIndicator: import("prop-types").Requireable<boolean>; showsAccuracyRing: import("prop-types").Requireable<boolean>; }>>; distanceFilter: import("prop-types").Requireable<number>; showsIndoorMap: import("prop-types").Requireable<boolean>; showsIndoorSwitch: import("prop-types").Requireable<boolean>; showsBuildings: import("prop-types").Requireable<boolean>; showsLabels: import("prop-types").Requireable<boolean>; showsCompass: import("prop-types").Requireable<boolean>; showsZoomControls: import("prop-types").Requireable<boolean>; showsScale: import("prop-types").Requireable<boolean>; showsLocationButton: import("prop-types").Requireable<boolean>; showsTraffic: import("prop-types").Requireable<boolean>; maxZoomLevel: import("prop-types").Requireable<number>; minZoomLevel: import("prop-types").Requireable<number>; zoomLevel: import("prop-types").Requireable<number>; center: import("prop-types").Requireable<import("prop-types").InferProps<{ latitude: import("prop-types").Validator<number>; longitude: import("prop-types").Validator<number>; }>>; region: import("prop-types").Requireable<import("prop-types").InferProps<{ latitude: import("prop-types").Validator<number>; longitude: import("prop-types").Validator<number>; /** * 地图显示区域 */ latitudeDelta: import("prop-types").Validator<number>; longitudeDelta: import("prop-types").Validator<number>; }>>; limitRegion: import("prop-types").Requireable<import("prop-types").InferProps<{ latitude: import("prop-types").Validator<number>; longitude: import("prop-types").Validator<number>; /** * 地图显示区域 */ latitudeDelta: import("prop-types").Validator<number>; longitudeDelta: import("prop-types").Validator<number>; }>>; tilt: import("prop-types").Requireable<number>; rotation: import("prop-types").Requireable<number>; zoomEnabled: import("prop-types").Requireable<boolean>; scrollEnabled: import("prop-types").Requireable<boolean>; rotateEnabled: import("prop-types").Requireable<boolean>; tiltEnabled: import("prop-types").Requireable<boolean>; hitSlop?: import("prop-types").Validator<import("react-native").Insets | undefined> | undefined; onLayout?: import("prop-types").Validator<((event: import("react-native").LayoutChangeEvent) => void) | undefined> | undefined; pointerEvents?: import("prop-types").Validator<"box-none" | "none" | "box-only" | "auto" | undefined> | undefined; removeClippedSubviews?: import("prop-types").Validator<boolean | undefined> | undefined; style?: import("prop-types").Validator<import("react-native").StyleProp<import("react-native").ViewStyle>> | undefined; testID?: import("prop-types").Validator<string | undefined> | undefined; nativeID?: import("prop-types").Validator<string | undefined> | undefined; collapsable?: import("prop-types").Validator<boolean | undefined> | undefined; needsOffscreenAlphaCompositing?: import("prop-types").Validator<boolean | undefined> | undefined; renderToHardwareTextureAndroid?: import("prop-types").Validator<boolean | undefined> | undefined; focusable?: import("prop-types").Validator<boolean | undefined> | undefined; shouldRasterizeIOS?: import("prop-types").Validator<boolean | undefined> | undefined; isTVSelectable?: import("prop-types").Validator<boolean | undefined> | undefined; hasTVPreferredFocus?: import("prop-types").Validator<boolean | undefined> | undefined; tvParallaxProperties?: import("prop-types").Validator<import("react-native").TVParallaxProperties | undefined> | undefined; tvParallaxShiftDistanceX?: import("prop-types").Validator<number | undefined> | undefined; tvParallaxShiftDistanceY?: import("prop-types").Validator<number | undefined> | undefined; tvParallaxTiltAngle?: import("prop-types").Validator<number | undefined> | undefined; tvParallaxMagnification?: import("prop-types").Validator<number | undefined> | undefined; onStartShouldSetResponder?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => boolean) | undefined> | undefined; onMoveShouldSetResponder?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => boolean) | undefined> | undefined; onResponderEnd?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined; onResponderGrant?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined; onResponderReject?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined; onResponderMove?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined; onResponderRelease?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined; onResponderStart?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined; onResponderTerminationRequest?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => boolean) | undefined> | undefined; onResponderTerminate?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined; onStartShouldSetResponderCapture?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => boolean) | undefined> | undefined; onMoveShouldSetResponderCapture?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => boolean) | undefined> | undefined; onTouchStart?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined; onTouchMove?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined; onTouchEnd?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined; onTouchCancel?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined; onTouchEndCapture?: import("prop-types").Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined; accessible?: import("prop-types").Validator<boolean | undefined> | undefined; accessibilityActions?: import("prop-types").Validator<readonly Readonly<{ name: import("react-native").AccessibilityActionName; label?: string | undefined; }>[] | undefined> | undefined; accessibilityLabel?: import("prop-types").Validator<string | undefined> | undefined; accessibilityRole?: import("prop-types").Validator<"image" | "none" | "button" | "link" | "search" | "keyboardkey" | "text" | "adjustable" | "imagebutton" | "header" | "summary" | "alert" | "checkbox" | "combobox" | "menu" | "menubar" | "menuitem" | "progressbar" | "radio" | "radiogroup" | "scrollbar" | "spinbutton" | "switch" | "tab" | "tablist" | "timer" | "toolbar" | undefined> | undefined; accessibilityState?: import("prop-types").Validator<import("react-native").AccessibilityState | undefined> | undefined; accessibilityHint?: import("prop-types").Validator<string | undefined> | undefined; accessibilityValue?: import("prop-types").Validator<import("react-native").AccessibilityValue | undefined> | undefined; onAccessibilityAction?: import("prop-types").Validator<((event: import("react-native").AccessibilityActionEvent) => void) | undefined> | undefined; accessibilityComponentType?: import("prop-types").Validator<"none" | "button" | "radiobutton_checked" | "radiobutton_unchecked" | undefined> | undefined; accessibilityLiveRegion?: import("prop-types").Validator<"none" | "polite" | "assertive" | undefined> | undefined; importantForAccessibility?: import("prop-types").Validator<"auto" | "yes" | "no" | "no-hide-descendants" | undefined> | undefined; accessibilityElementsHidden?: import("prop-types").Validator<boolean | undefined> | undefined; accessibilityTraits?: import("prop-types").Validator<"image" | "none" | "button" | "link" | "search" | "text" | "adjustable" | "header" | "summary" | "selected" | "plays" | "key" | "disabled" | "frequentUpdates" | "startsMedia" | "allowsDirectInteraction" | "pageTurn" | import("react-native").AccessibilityTrait[] | undefined> | undefined; accessibilityViewIsModal?: import("prop-types").Validator<boolean | undefined> | undefined; onAccessibilityEscape?: import("prop-types").Validator<(() => void) | undefined> | undefined; onAccessibilityTap?: import("prop-types").Validator<(() => void) | undefined> | undefined; onMagicTap?: import("prop-types").Validator<(() => void) | undefined> | undefined; accessibilityIgnoresInvertColors?: import("prop-types").Validator<boolean | undefined> | undefined; }; nativeComponent: string; /** * 设置地图状态(坐标、缩放级别、倾斜度、旋转角度),支持动画过度 * * @param status * @param duration */ setStatus(status: MapStatus, duration?: number): void; render(): JSX.Element; static Marker: typeof Marker; static Polyline: typeof Polyline; static Polygon: import("react-native").HostComponent<import("./polygon").PolygonProps>; static Circle: import("react-native").HostComponent<import("./circle").CircleProps>; static HeatMap: import("react-native").HostComponent<import("./heat-map").HeatMapProps>; static MultiPoint: typeof MultiPoint; static DrivePath: typeof DrivePath; static RidePath: typeof RidePath; static WalkPath: typeof WalkPath; static TexturePolyline: typeof TexturePolyline; }