2016-06-10 4 views
3

Ich habe eine Funktion ausgelöst durch Knopfklick, überprüft Geolocation..Es funktioniert gut auf Handys, wenn Geolocation eingeschaltet ist, und wenn aus, wird eine Meldung so angezeigt, wie erwartet. Das Problem tritt auf, wenn zuerst der Standortdienst des Telefons ausgeschaltet wird, auf die Schaltfläche geklickt wird (Meldung erscheint wie erwartet), und wenn der Benutzer die Standortdienste wieder aktiviert, während die App noch geöffnet ist, und erneut auf die Schaltfläche klickt Die Meldung 'Kein Standortdienst' wird angezeigt.Geolocation funktioniert nicht, wenn Standortdienst ein- und ausgeschaltet wird

Gibt es eine Möglichkeit zu überprüfen, ob der Standortdienst des Telefons bei jedem Klick aktiviert oder deaktiviert ist? Erzielen der gleichen Ergebnisse auf Android und IOS.

Code:

$(document).ready(function() { 

    $('#smallScreenGeolocate').on('click', function(){ 

    getCurrentLocation(); 
    }); 
}); 

function getCurrentLocation() { 
if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(addGeolocationMarker, locationError); 
    return true; 
} 
else { 
    alert("Browser doesn't support Geolocation. Visit http://caniuse.com to discover browser support for the Geolocation API."); 
    return false; 
} 
} 
+0

niemand? Ich kann nichts finden, um das zu beheben ... scheint merkwürdig, dass ich nicht feststellen kann, ob Geolocation ein- oder ausgeschaltet wurde, während eine Webapp geöffnet ist ...? – JasonBK

+0

reden wir über eine Art von Framework? wie Phonegap, Cordova, Xamarin oder eine einfache Webanwendung? – ddb

+0

Wenn Sie die Seite aktualisieren (mit aktivem Standort), können Sie auf die Details des Standorts zugreifen? – ddb

Antwort

1

prüfen diese Antwort von einem anderen SO Post https://stackoverflow.com/a/14862073/6539349

Sie müssen prüfen, was der Fehler war, wie hier vorgeschlagen http://www.w3schools.com/html/html5_geolocation.asp

function getLocation() { 
    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(showPosition,showError); 
    } else { 
     x.innerHTML = "Geolocation is not supported by this browser."; 
    } 
} 

function showPosition(position) { 
    x.innerHTML = "Latitude: " + position.coords.latitude + 
    "<br>Longitude: " + position.coords.longitude; 
} 

Der zweite Parameter showError der Methode getCurrentPosition() wird verwendet, um Fehler zu behandeln. Es gibt eine Funktion ausführen, wenn sie den Standort des Nutzers erhalten fehlschlägt:

function showError(error) { 
    switch(error.code) { 
     case error.PERMISSION_DENIED: 
      x.innerHTML = "User denied the request for Geolocation." 
      break; 
     case error.POSITION_UNAVAILABLE: 
      x.innerHTML = "Location information is unavailable." 
      break; 
     case error.TIMEOUT: 
      x.innerHTML = "The request to get user location timed out." 
      break; 
     case error.UNKNOWN_ERROR: 
      x.innerHTML = "An unknown error occurred." 
      break; 
    } 
} 
+0

zeigt die App einen dieser Fehler an, wenn Sie nach dem Einschalten der Lokalisierung auf die Schaltfläche tippen? wenn ja, welche? – ddb

+0

@ddb es funktioniert, wenn aktualisiert, aber das ist nicht genug, da die Webapp als App im Apple Store mit einem App-Wrapper verwendet wird ... Ich bekomme bereits alle oben genannten Fehlercodes; Ich bekomme den gleichen Fehler, nachdem die Geolocation eingeschaltet wurde, wenn die Webapp geöffnet ist. Ich habe einen sehr ähnlichen Code wie der oben in der App angegebene Code. Das löst mein Problem nicht. – JasonBK

+0

auch die andere SO Antwort gegeben löst dieses Problem auch nicht. – JasonBK

Verwandte Themen