TypeError:未定义不是对象(正在评估“ navigator.geolocation.getCurrentPosition”)

时间:2019-09-06 11:47:58

标签: javascript google-maps react-native navigator react-native-maps

我最近开始研究react-native地图,现在我正试图访问react-native-maps,原因是我单击地图的任何地方都应该给我坐标。我安装了react-native-map并尝试使用以下方法

navigator.geolocation.getCurrentPosition((position) => {

我遇到了错误。

E | ReactNativeJS ▶︎ TypeError: undefined is not an object (evaluating 'navigator.geolocation.getCurrentPosition')
                             │ 
                             │ This error is located at:
                             │ in App (at renderApplication.js:40)
                             │ in RCTView (at View.js:35)
                             │ in View (at AppContainer.js:98)
                             │ in RCTView (at View.js:35)
                             │ in View (at AppContainer.js:115)
                             └ in AppContainer (at renderApplication.js:39)

我的代码看起来像这样。

  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: LONGITUDE_DELTA,
      }

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

我也尝试了其他方法,例如

this.watchID = navigator.geolocation.watchPosition((position) => {

navigator.geolocation.clearWatch(this.watchID);

如何解决此问题并使这些方法在react-native-maps中起作用

我正在使用import MapView from 'react-native-maps';此导入

1 个答案:

答案 0 :(得分:1)

我不确定这是否是您要寻找的答案,但是如果您使用react-native-community中的react-native-geolocation库没有任何问题,则可以轻松地遵循example。请不要忘记在这样的AndroidManifest.xml文件中添加权限-

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

您还需要在清单文件中添加元数据-

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

您可以使用Google API控制台轻松生成API密钥