2016-11-23 24 views
0

問題がありますが、これにリンクされているかどうかわかりません。警告:失敗した小道具タイプ:必要な小道具 'region.latitude'が指定されていません

AndroidスタジオからAndroidエミュレータでマップを実行しているときに、この警告が表示され、Googleの実際の位置情報ではなく、パロアルトのGoogleプレックスにジオロケーションが設定されています。私はエミュレータを使用しているかどうかですか?あなたがチェックしたい場合はここで

は私のコードです:

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; 

は、あなたの答えてくれてありがとうあなたが任意のアイデアを持っている場合、私はこの問題で少し失われました。

答えて

1

私はあなたがこれpropTypes警告を投げ、初期にcords.latitudecords.longitudeため不定となりますレンダリングthis.state.position.cordsオブジェクトからMapView座標を、アウト代入しているからだと考えています。

これを避けるには、コンストラクタで初期化します。

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

答えをありがとう、それはそうでした! –

+0

恐ろしい!それはうれしかったです。 –

0

緯度と経度を変更することができます。

アンドロイドスタジオ([ツール] - >アンドロイド - > Androidのデバイスモニタ)から起動Androidデバイスモニタエミュレータコントロールタブ

スイッチと場所でそれを変更するにはグループを制御します。 enter image description here

+0

非常にありがとう、あなたは、ジオロケーションをエミュレートする必要がありますシミュレータで、それを知らなかった! –

関連する問題