Глобус нарисован на Skia точками суши: ближние точки светлее, дальние едва видны, поэтому шар ощущается объёмным. Он медленно вращается вокруг наклонённой оси, а метки городов пульсируют расходящимися кольцами и гаснут, уходя за горизонт.
Глобус можно крутить пальцем или мышью: после отпускания он продолжает вращаться по инерции и плавно возвращается к обычной скорости. Анимация идёт на UI-потоке Reanimated и останавливается, когда приложение свёрнуто или (в вебе) глобус вне экрана; при «Уменьшении движения» он замирает. Работает на iOS, Android и в вебе.
Поставьте зависимости:
npm install @shopify/react-native-skia react-native-gesture-handler react-native-reanimatedpnpm add @shopify/react-native-skia react-native-gesture-handler react-native-reanimatedyarn add @shopify/react-native-skia react-native-gesture-handler react-native-reanimatedbun add @shopify/react-native-skia react-native-gesture-handler react-native-reanimatedСкопируйте эти файлы в src/shared/components/organisms/dotted-globe/:
Код доступен по подпискеPro
Исходник «Точечный глобус» открывается с подпиской Pro. Уже оформили? Войдите в аккаунт.
Проверьте алиас путей. Импорты в коде выше записаны так, как их пишет astra-rn add: @/shared/components, @/shared/utils и @/shared/hooks. Нужен алиас "@/*": ["./src/*"] в tsconfig.json — или поправьте импорты под свои пути.
Код доступен по подпискеPro
Исходник «Точечный глобус» открывается с подпиской Pro. Уже оформили? Войдите в аккаунт.
markers?Тип readonly GlobeMarker[]
markerColor?Тип string
spinSpeed?Тип number
tilt?Тип number
dotRadius?Тип number
bands?Тип number
interactive?Тип boolean
theme?Тип "dark" | "light"
style?Тип StyleProp<ViewStyle>