【问题标题】:navigator.geolocation.getCurrentPosition not workingnavigator.geolocation.getCurrentPosition 不工作
【发布时间】:2018-04-18 18:18:03
【问题描述】:

我似乎无法让navigator.geolocation 工作。它进入错误代码 3 的错误函数,并出现错误消息“位置请求超时”我下面的代码做错了什么?

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)

【问题讨论】:

  • 尝试删除maximumAge: 0

标签: javascript react-native geolocation


【解决方案1】:

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

如果与highAccuracy和maximumAge有关

【讨论】:

    【解决方案2】:

    另一种方法是使用 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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:
        componentDidMount(){
        navigator.geolocation.getCurrentPosition(
                            (position) => {
                                       console.log(position)
                                          })
        }
        

        这对我有用,记得在 Android 中添加权限

        【讨论】:

        • 欢迎来到 Stackoverflow。如果您签出How to Answer 页面以备将来在堆栈溢出时的努力会更好。 -谢谢
        猜你喜欢
        • 2012-06-05
        • 1970-01-01
        • 1970-01-01
        • 2014-05-22
        • 1970-01-01
        • 2018-11-14
        • 2019-12-23
        • 1970-01-01
        • 2018-04-30
        相关资源
        最近更新 更多