2017-08-08 20 views
1

我下面上反應原生地圖本教程:https://www.youtube.com/watch?v=MqLC0kOqrwk&t=1s陣營本地地圖 - 空對象引用

我的代碼是幾乎相同的導師(我沒有用MapView.Markers),但我得到這個錯誤:嘗試來調用接口方法 '布爾 abi19_0_0.com.facebook.react.bridge.ReadableMap.hasKey(java.lang.String中)' 上的空對象引用

這是我的代碼:

import React from 'react'; 
import { View, Text, StyleSheet, Dimensions } from 'react-native'; 
import MapView from 'react-native-maps'; 

const { width, height } = Dimensions.get ('window') 

const SCREEN_HEIGHT = height 
const SCREEN_WIDTH = width 
const ASPECT_RATIO = width/height 

const LATITUDE_DELTA = 0.0922 
const LONGTITUDE_DELTA = LATITUDE_DELTA * ASPECT_RATIO 

export default class MapScreen extends React.Component { 

    constructor (props) { 
     super (props) 

     this.state = { 
      initialPosition: { 
       latitude: 0, 
       longitude: 0, 
       latitudeDelta: 0, 
       longitudeDelta: 0, 
      } 
     } 
    } 

    watchID: ?number = null 

    componentDidMount() { 
     navigator.geolocation.getCurrentPosition ((position) => { 
      var lat = parseFloat (position.coords.latitude) 
      var long = parseFloat (position.coords.longitude) 

      var initialRegion = { 
       latitude: lat, 
       longitude: long, 
       latitudeDelta: LATITUDE_DELTA, 
       longitudeDelta: LONGTITUDE_DELTA 
      } 

      this.setState ({ initialPosition: initialRegion }) 
     }, 
     (error) => alert (JSON.stringify (error)), 
     { enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 }) 

     this.watchID = navigator.geolocation.watchPosition ((position) => { 
      var lat = parseFloat (position.coords.latitude) 
      var long = parseFloat (position.coords.longitude) 

      var lastRegion = { 
       latitude: lat, 
       longitude: long, 
       latitudeDelta: LATITUDE_DELTA, 
       longitudeDelta: LONGTITUDE_DELTA 
      } 

      this.setState ({ initialPosition: lastRegion }) 
     }) 
    } 

    componentWillUnmount() { 
     navigator.geolocation.clearWatch (this.watchID) 
    } 

    render() { 
     return (
      <MapView 
       style = { styles.mapContainer } 
       region = {this.state.initialPosition} 
      /> 
     ); 
    } 
} 
+0

請檢查react-native和react-native-maps的兼容性。最新的0.47版本存在問題。您使用哪種版本的react-native和RNMaps?嘗試RN v。0.44 - 現在看起來非常穩定。 –

+0

RN:0.46.1,RNMaps:0.16.0 我試過更新和重新鏈接,但什麼也沒有。將再次嘗試RN 0.44。 –

+0

製作了一個RN 0.44.0的項目,並且遇到了最新版本中不存在的Android SDK問題。我會堅持最新的。 –

回答

0

託管在新react-native init項目,下面添加到./android/app/src/main/AndroidManifest.xml得到這個工作(RN 0.47.1,RNMaps 0.16.0):

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<meta-data android:name="com.google.android.geo.API_KEY" android:value="WHATEVERYOURAPIKEYIS" />