我遇到了问题,但我不知道它是否与此有关。
当我从Android Studio在Android模拟器上运行我的地图时,我收到了此警告,我在Palo alto上的Google plex上进行地理定位,而不是在我的实际地理定位上。是因为我使用的是模拟器吗?
如果您想检查,请输入以下代码:
Map.js
import React, { Component } from 'react';
import Geolocation from '../geolocation/Geolocation';
import Shops from '../shops/Shop';
import {
Text,
View
} from 'react-native';
import MapView from 'react-native-maps';
import styles from './Style';
class Map extends Geolocation {
render() {
return (
<View>
<MapView style={styles.map}
region={{
latitude: this.state.position.coords.latitude,
latitudeDelta: 0.001,
longitude: this.state.position.coords.longitude,
longitudeDelta: 0.001
}} />
<Shops />
</View>
);
}
}
export default Map;
Geolocation.js
import React, { Component } from 'react';
import styles from './Style';
class Geolocation extends Component {
constructor(props) {
super(props);
this.state = {
position : {
coords: {}
}
}
}
componentDidMount() {
navigator.geolocation.getCurrentPosition(
(position) => {
this.setState({position});
},
(error) => alert(error.message),
{enableHighAccuracy: true, timeout: 20000}
);
navigator.geolocation.watchPosition((position) => {
this.setState({position});
});
}
}
export default Geolocation;
如果您有任何想法,感谢您的回答,我对此问题感到有点迷失。
答案 0 :(得分:1)
我相信这是因为您要从MapView
对象中分配出this.state.position.cords
坐标,这些坐标在cords.latitude
和cords.longitude
的初始渲染时将是未定义的,因此抛出propTypes
警告。
在构造函数中初始化它们以避免这种情况。
constructor(props) {
super(props);
this.state = {
position : {
coords: {
latitude: 0,
longitude: 0
}
}
}
}
答案 1 :(得分:0)
可以更改纬度和经度。
从Android Studio启动 Android设备监视器(工具 - &gt; Android - &gt; Android设备监视器)
答案 2 :(得分:0)
仅适用于Android的问题
解决方案:-
<MapView
initialRegion={{
latitude: Number(letitude),
longitude: Number(longitude),
latitudeDelta: 0.0922,
longitudeDelta: 0.0421
}}
>
数字(您的让和长) ,它将转换为数字