react-native-anavi
Version:
react native amap navigation component, Android + iOS
70 lines (57 loc) • 1.92 kB
text/typescript
import { number, func, shape, string, oneOfType, oneOf, bool, object, arrayOf } from 'prop-types';
export const LatLngPropType = shape({
latitude: number.isRequired,
longitude: number.isRequired,
});
export const NaviLatLngPropType = shape({
latitude: number.isRequired,
longitude: number.isRequired,
});
export const NaviPoiPropType = shape({
name: string.isRequired,
coordinate: LatLngPropType.isRequired,
poiId: string.isRequired,
direction: number,
});
export const DriveNaviPointPropType = oneOfType([
string.isRequired,
NaviLatLngPropType.isRequired,
NaviPoiPropType.isRequired,
arrayOf(string),
arrayOf(NaviLatLngPropType),
arrayOf(NaviPoiPropType),
]);
export const RideNaviPointPropType = oneOfType([NaviLatLngPropType.isRequired, NaviPoiPropType.isRequired]);
export const WalkNaviPointPropType = oneOfType([
NaviLatLngPropType.isRequired,
NaviPoiPropType.isRequired,
arrayOf(NaviLatLngPropType).isRequired,
]);
export const NaviShowModePropType = oneOf([1, 2, 3]);
export const NaviTrackingModePropType = oneOf([0, 1]);
export const RegionPropType = shape({
latitude: number.isRequired,
longitude: number.isRequired,
latitudeDelta: number.isRequired,
longitudeDelta: number.isRequired,
});
export const PointPropType = shape({
x: number.isRequired,
y: number.isRequired,
});
export const LocationStylePropType = shape({
image: oneOfType([object, number]),
fillColor: string,
strokeColor: string,
strokeWidth: number,
locationDotBgColor: string,
locationDotFillColor: string,
enablePulseAnnimation: bool,
showsHeadingIndicator: bool,
showsAccuracyRing: bool,
});
export const mapEventsPropType = (events: string[]) =>
events.reduce((props: { [key: string]: Function }, event) => {
props[event.replace(/^on/, 'onAMap')] = func;
return props;
}, {});