Получить текущее местоположение, широта и долгота в ReactNative с помощью react-native-maps
на самом деле я разрабатываю местоположение карты, когда я нажимаю в определенном месте, я получаю широту и долготу, но не текущее местоположение, широту и долготу.
Я не знаю, как это узнают.
Как я могу их получить и как я могу поместить маркер в эту позицию.
вот мой код:
class Maps extends React.Component {
constructor(props) {
super(props);
this.state = {
region: {
latitude: LATITUDE,
longitude: LONGITUDE,
latitudeDelta: LATITUDE_DELTA,
longitudeDelta: LONGITUDE_DELTA,
},
marker: {
latlng:{
latitude: null,
longitude: null,
latitudeDelta: LATITUDE_DELTA,
longitudeDelta: LONGITUDE_DELTA
}
}
}
}
componentDidMount() {
navigator.geolocation.getCurrentPosition (
(position) => { alert("value:" + position) },
(error) => { console.log(error) },
{
enableHighAccuracy: true,
timeout: 20000,
maximumAge: 10000
}
)
}
onMapPress(e) {
alert("coordinates:" + JSON.stringify(e.nativeEvent.coordinate))
this.setState({
marker: [{ coordinate: e.nativeEvent.coordinate }]
})
}
render() {
return (
<View style={styles.container}>
<View style={{flexGrow:1}}>
<MapView
ref="map"
provider={this.props.provider}
style={styles.map}
onPress={this.onMapPress.bind(this)}
provider = {PROVIDER_DEFAULT}
mapType="standard"
zoomEnabled={true}
pitchEnabled={true}
showsUserLocation={true}
followsUserLocation={true}
showsCompass={true}
showsBuildings={true}
showsTraffic={true}
showsIndoors={true}>
</MapView>
</View>
</View>
)
}
}
2 ответов
я сделал это, следуя этим шагам, используя react-native@0.42.3
и react-native-maps@^0.13.1
и с помощью react-native@0.44.0
и react-native-maps@^0.15.2
на дату:
поставил
предлагаю вам ознакомиться с этой официальной документацией о геолокации:https://facebook.github.io/react-native/docs/geolocation.html
затем, с текущим местоположением, вы можете поместить эту информацию в свое состояние
navigator.geolocation.getCurrentPosition((position) => {
this.setState({position: {longitude: position.longitude, latitude: position.latitude}});
}, (error) => {
alert(JSON.stringify(error))
}, {
enableHighAccuracy: true,
timeout: 20000,
maximumAge: 1000
});
затем вы сможете в своем методе рендеринга составить окончательный вид с помощью маркера:
render() {
return (
<MapView ...>
<MapView.Marker
coordinate={this.state.position}
title="title"
description="description"
/>
</MapView>
)
}