警告:失败的道具类型:必需道具&#region; latitude'未指定

时间:2016-11-23 13:33:59

标签: javascript reactjs react-native react-native-android

我遇到了问题,但我不知道它是否与此有关。

当我从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;

如果您有任何想法,感谢您的回答,我对此问题感到有点迷失。

3 个答案:

答案 0 :(得分:1)

我相信这是因为您要从MapView对象中分配出this.state.position.cords坐标,这些坐标在cords.latitudecords.longitude的初始渲染时将是未定义的,因此抛出propTypes警告。

在构造函数中初始化它们以避免这种情况。

constructor(props) {
    super(props);
    this.state = {
        position : {
            coords: {
              latitude: 0,
              longitude: 0
            }
        }
    }
}

答案 1 :(得分:0)

可以更改纬度和经度。

从Android Studio启动 Android设备监视器(工具 - &gt; Android - &gt; Android设备监视器)

切换到模拟器控制选项卡,然后在位置控制组中进行更改。 enter image description here

答案 2 :(得分:0)

仅适用于Android的问题

解决方案:-

<MapView 
  initialRegion={{
    latitude: Number(letitude),
    longitude: Number(longitude),
    latitudeDelta: 0.0922,
    longitudeDelta: 0.0421
  }}
>

数字(您的让和长) ,它将转换为数字