navigator.geolocation.getCurrentPosition 不工作

navigator.geolocation.getCurrentPosition not working

我似乎无法 navigator.geolocation 工作。它进入错误代码为 3 的错误函数和错误消息 "Location request timed out" 我下面的代码做错了什么?

import { AppRegistry } from 'react-native'
import { App } from './src'

var options = {
    enableHighAccuracy: true,
    timeout: 5000,
    maximumAge: 0
  };

  function success(pos) {
    var crd = pos.coords;

    console.log('Your current position is:');
    console.log(`Latitude : ${crd.latitude}`);
    console.log(`Longitude: ${crd.longitude}`);
    console.log(`More or less ${crd.accuracy} meters.`);
  }

  function error(err) {
    console.warn(`ERROR(${err.code}): ${err.message}`);
  }

  navigator.geolocation.getCurrentPosition(success, error, options);

GLOBAL.XMLHttpRequest = GLOBAL.originalXMLHttpRequest || GLOBAL.XMLHttpRequest
console.error = (error) => error.apply
AppRegistry.registerComponent('vepo', () => App)

这是 React Native 中的一个已知位置错误,特别是 Android。不要发送第三个参数(选项一),看看是否有效。

如果与highAccuracy和maximumAge有关

您应该在 componentDidMount 或函数调用中请求 navigator.geolocation.getCurrentPosition

componentDidMount() {
   navigator.geolocation.getCurrentPosition(success, error, options);
}
componentDidMount(){
navigator.geolocation.getCurrentPosition(
                    (position) => {
                               console.log(position)
                                  })
}

这对我有用,记得在Android

中添加权限

另一种方法是使用 HTML 和 Mozilla 提供的 JS 代码: https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/getCurrentPosition#Specifications 我第一次尝试就成功了...调用在 HTML 中,代码在 JS 中。

这是 HTML 代码:

      <p><button onclick="geoFindMe()">Show my location</button></p>
<div id="out"></div>

这是JS代码:

    function geoFindMe() {
                 var output = document.getElementById("out");

             if (!navigator.geolocation){
               output.innerHTML = "<p>Geolocation is not supported by your browser</p>";
               return;
             }

             function success(position) {
               var latitude  = position.coords.latitude;
               var longitude = position.coords.longitude;

               output.innerHTML = '<p>Latitude is ' + latitude + '° <br>Longitude is ' + longitude + '°</p>';

               var img = new Image();
               img.src = "https://maps.googleapis.com/maps/api/staticmap?center=" + latitude + "," + longitude + "&zoom=13&size=300x300&sensor=false";

               output.appendChild(img);
             }

             function error() {
               output.innerHTML = "Unable to retrieve your location";
             }

             output.innerHTML = "<p>Locating…</p>";

                 navigator.geolocation.getCurrentPosition(success, error);
     } 

注意:此代码直接来自 Mozilla(下面的 link - 参见 "Geolocation Live Example":

https://developer.mozilla.org/en-US/docs/Web/API/Geolocation_API