我正在开发地图位置。当我单击某个特定位置时,我会得到纬度和经度,但不是当前位置、纬度和经度。
我不知道怎么知道。
我怎样才能得到它们,我怎样才能把标记放在那个位置?
这是我的代码:
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>
)
}
}
原文由 Lavaraju 发布,翻译遵循 CC BY-SA 4.0 许可协议
我按照这些步骤使用
react-native@0.42.3
和react-native-maps@^0.13.1
并使用react-native@0.44.0
和react-native-maps@^0.15.2
日期:Set a
mapRegion
object in thestate
, the lastlongitude
and the lastlatitude
asnull
:然后在您的
componentDidMount()
函数中观察当前位置的每次变化:当有更改时,请在您的
this.state.mapRegion
中更新它们,传递实际坐标和delta
值(我的值可能与您的不同,因此请调整它们):然后您需要
onRegionChange()
函数,该函数用于为componentDidMount()
函数中的元素“设置”新值:卸载
componentWillUnmount()
上的地理位置:And render the
MapView
passing your currentmapRegion
object, theMapView.Marker
inside of it is just to show you the currentlatitude
andlongitude
当他们改变时:为您的地图添加 StyleSheet.absoluteFillObject ,以便使用设备的整个宽度和高度正确渲染它。
因此,对于您的
onPress()
功能,您可以执行类似于onRegionChange()
的操作,即获取实际坐标并设置它们:检查 expo.io 上的完整代码(虽然
react-native-maps
没有安装)