navigator.geolocation.getCurrentPosition not working

时间:2018-04-18 18:18:04

标签: javascript react-native geolocation

I can't seem to get navigator.geolocation to work. It goes into the error function with error code 3, and error message "Location request timed out" What is my code below doing wrong?

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)

4 个答案:

答案 0 :(得分:3)

这是本地特别是Android的已知位置错误。不要发送第三个参数(选项一)并查看是否有效。

如果与highAccuracy和maximumAge

有关

答案 1 :(得分:1)

一种替代方法是使用Mozilla提供的HTML和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(下面的链接-请参见“地理位置实时示例”:

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

答案 2 :(得分:0)

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

componentDidMount() {
   navigator.geolocation.getCurrentPosition(success, error, options);
}

答案 3 :(得分:0)

componentDidMount(){
navigator.geolocation.getCurrentPosition(
                    (position) => {
                               console.log(position)
                                  })
}

这项工作对我来说,请记住在Android中添加权限