navigator.geolocation.getCurrentPosition不起作用

问题描述 投票:2回答:4

我似乎无法让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)
javascript react-native geolocation
4个回答
3
投票

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

如果与highAccuracy和maximumAge有关


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


0
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.