相关文章推荐
善良的伏特加  ·  c# IDataObject d = ...·  1 年前    · 
留胡子的扁豆  ·  kubernetes - Error ...·  1 年前    · 
苦恼的山羊  ·  QGraphicsItem的hoverMov ...·  1 年前    · 
慷慨的抽屉  ·  phpcurl ...·  1 年前    · 

为什么navigator.geolocation.getcurrentposition在react native和expo中不可用?

1 人关注

我试图从一个设备上获得一些位置信息,我在安卓手机上使用React-native、Expo和ExpoGo,我没有使用模拟器,应用程序在安卓的ExpoGo上工作,但地理定位不工作,每次都发送这个错误信息。 【替换代码0

请帮助我找到这个问题的解决办法。

这是使用的应用程序代码。

import { Text, View} from "react-native";
import styles from "./styles";
const API_KEY = "";
const URL = `https://maps.google.com/maps/api/geocode/json?key=${API_KEY}&latlng=`;
export default function WhereAmI() {
  const [address, setAddress] = useState("loading...");
  const [longitude, setLongitude] = useState();
  const [latitude, setLatitude] = useState();
  useEffect(() => {
    function setPosition({ coords: { latitude, longitude } }) {
      setLongitude(longitude);
      setLatitude(latitude);
      fetch(`${URL}${latitude},${longitude}`)
        .then(
          (resp) => resp.json(),
          (e) => console.error(e)
        .then(({ results }) => {
          setAddress(results[0].formatted_address);
    navigator.geolocation.getCurrentPosition(setPosition);
    let watcher = navigator.geolocation.watchPosition(
      setPosition,
      (err) => console.error(err),
      { enableHighAccuracy: true }
    return () => {
      navigator.geolocation.clearWatch(watcher);
  return (
    <View style={styles.container}>
      <Text style={styles.label}>Address: {address}</Text>
      <Text style={styles.label}>Latitude: {latitude}</Text>
      <Text style={styles.label}>Longitude: {longitude}</Text>
    </View>
    
android
reactjs
react-native
geolocation
expo
Othmane Namani
Othmane Namani
发布于 2021-06-29
1 个回答
Othmane Namani
Othmane Namani
发布于 2021-06-30
已采纳
0 人赞同

我解决了这个问题,这对我很有效。

  • geolocation on iOS and Android:
  • I installed the expo-location package by running expo install expo-location .
  • I imported expo location in App.js as Location: import * as Location from 'expo-location' .
  • I used the #installWebGeolocationPolyfill function that polyfills #navigator.geolocation for interop with the core React Native and Web API approach to geolocation just before using of the #navigator.geolocation.getCurrentPosition like this:
  •        # ... some code
          Location.installWebGeolocationPolyfill()
          navigator.geolocation.getCurrentPosition(setPosition);
          # ... some code
    

    2.错误'formatted_address'是未定义的。 这是因为没有API_KEY,你应该从谷歌获得一个API密钥,相反,我只是像这样手动添加到#setPosition函数中。

     #...some code
    .then(
              ({ results }) => {
                results[0]={formatted_address:"here"}
                setAddress(results[0].formatted_address)