如何使用 react-native-maps 获取当前位置

新手上路,请多包涵

我正在尝试使用 react-native 地图在 android 设备上的当前用户地理位置呈现地图。

这是我到目前为止所得到的:

 import React, { Component } from 'react';

import {
  View,
  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 LONGITUDE_DELTA = LATITUDE_DELTA * ASPECT_RATIO

class MapComponent extends Component {
  constructor() {
    super()
    this.state = {
      initialPosition: {
        latitude: 0,
        longitude: 0,
        latitudeDelta: 0,
        longitudeDelta: 0,
      },
    }
  }

  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, maximumAge: 1000});
  }

  renderScreen = () => {
      return (
        <View style={styles.container}>
          <MapView
            style={styles.map}
            initialRegion={this.state.initialPosition}/>
        </View>
      );
  }

  render() {
    return (
      this.renderScreen()
    );
  }
}

const styles = StyleSheet.create({
  container: {
    position: 'absolute',
    top: 0,
    left: 0,
    right: 0,
    bottom: 0,
    justifyContent: 'flex-end',
    alignItems: 'center',
  },
  map: {
    position: 'absolute',
    top: 0,
    left: 0,
    right: 0,
    bottom: 0,
  },
});

export default MapComponent;

地图按预期呈现,但不在当前设备地理位置中。 (它呈现在海洋中间)

权限已在 AndroidManifest.xml 中设置为:

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

20 秒后,我收到一条警报,提示“位置请求超时”“代码 3”

我做错了什么?

原文由 MacFlyer 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
1 个回答

我不确定,但有一个看起来相关的 问题(“地理位置超时,代码 3”)

对于在 android 上遇到此问题的其他人,请尝试删除 maximumAge: 2000 选项参数。此选项导致地理定位超时或应用程序崩溃。

原文由 Mikhail Aksenov 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题