Ich kann navigator.geolocation scheinbar nicht zum Laufen bringen. Es geht in die Fehlerfunktion mit Fehlercode 3 und der Fehlermeldung "Zeitüberschreitung der Standortanforderung". Was macht mein Code unten falsch?

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)
2
BeniaminoBaggins 18 Apr. 2018 im 21:18

4 Antworten

Beste Antwort

Dies ist ein bekannter Standortfehler bei der Reaktion auf native und speziell auf Android. Senden Sie nicht den dritten Parameter (die Option 1) und prüfen Sie, ob dies funktioniert.

Hat mit der hohen Genauigkeit und dem maximalen Alter zu tun

3
sfratini 18 Apr. 2018 im 21:29

Sie sollten das navigator.geolocation.getCurrentPosition innerhalb von componentDidMount oder in einem Funktionsaufruf anfordern:

componentDidMount() {
   navigator.geolocation.getCurrentPosition(success, error, options);
}
0
rink.attendant.6 19 Apr. 2018 im 04:56

Eine Alternative wäre die Verwendung des von Mozilla bereitgestellten HTML- und JS-Codes: https://developer.mozilla.org/en- US / docs / Web / API / Geolocation / getCurrentPosition # Spezifikationen Hat beim ersten Versuch funktioniert ... der Aufruf ist in HTML und der Code in JS.

Hier ist der HTML-Code:

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

Hier ist der JS-Code:

    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);
     } 

Hinweis: Dieser Code stammt direkt aus Mozilla (Link unten - siehe "Geolocation Live-Beispiel":

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

1
TechnoCat 14 Sept. 2018 im 06:43
componentDidMount(){
navigator.geolocation.getCurrentPosition(
                    (position) => {
                               console.log(position)
                                  })
}

Denken Sie daran, diese Berechtigung in Android hinzuzufügen

0
DucAnh Mai 19 Apr. 2018 im 06:00