Для отметки местонахождения пользователей на карте в React Native можно использовать пакеты react-native-maps и react-native-geolocation.
1. Установка пакетов:
Пакет react-native-maps используется для работы с картой, а пакет react-native-geolocation - для определения геолокации пользователя.
Чтобы установить пакеты, выполните следующую команду:
npm install react-native-maps react-native-geolocation --save
2. Привязка пакетов к проекту:
Для использования пакетов необходимо привязать их к проекту.
В файле android/app/src/main/java/com/{your-app-name}/MainApplication.java
добавьте следующие строки:
import com.facebook.react.modules.location.LocationPackage; import com.airbnb.android.react.maps.MapsPackage; ... @Override protected List<ReactPackage> getPackages() { return Arrays.<ReactPackage>asList( ... new MapsPackage(), new LocationPackage() ); }
В файле android/app/src/main/AndroidManifest.xml
добавьте следующие строки:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
3. Использование пакетов:
a) React Native Maps
Создайте компонент MapView, в котором будет отображаться карта. Установите начальное положение карты.
import React from 'react'; import { View } from 'react-native'; import MapView from 'react-native-maps'; class MapScreen extends React.Component { constructor(props) { super(props); this.state = { initialRegion: { latitude: 37.78825, longitude: -122.4324, latitudeDelta: 0.0922, longitudeDelta: 0.0421, }, }; } render() { return ( <View style={{ flex: 1 }}> <MapView style={{ flex: 1 }} region={this.state.initialRegion} /> </View> ); } } export default MapScreen;
b) React Native Geolocation
Добавьте метод для определения текущего местоположения пользователя:
componentDidMount() { navigator.geolocation.getCurrentPosition( position => { const { latitude, longitude } = position.coords; const initialRegion = { latitude, longitude, latitudeDelta: 0.0922, longitudeDelta: 0.0421, }; this.setState({ initialRegion }); }, error => console.error(error), { enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 } ); }
Добавьте позволения для использования геолокации в AndroidManifest.xml
и Info.plist
для Android и iOS, соответственно.
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<key>NSLocationWhenInUseUsageDescription</key> <string>Your description here</string>
В итоге вы сможете отмечать местоположение пользователей на карте в приложении, используя React Native и пакеты react-native-maps и react-native-geolocation.