react-native-anavi
Version:
react native amap navigation component, Android + iOS
302 lines (301 loc) • 15.1 kB
TypeScript
/// <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;
}