Znalazłem wiele pytań dotyczących współrzędnych GPS, ale nie, które potwierdzają korzystanie z klawiszy mobilnych GPS zamiast GPS, takich jak Geolokalizacja i tak jak.

moja rzeczywista metoda:

Używam navigator.geolocation.getCurrentPosition(), Lat/Long pochodzi z sieci, oto kod:

function getGPS(funcCallBack)
{
   if (navigator.geolocation)
   {
     var timeoutVal = getCookie("GPSTimeout");
     navigator.geolocation.getCurrentPosition(sucess
                                             ,error
                                             ,{enableHighAccuracy: true
                                              ,timeout: timeoutVal
                                              ,maximumAge: 0}
                                             );
   }
   else{
   alert('GPS is turned off, or was not possible to find it. Now, doing the login without localization.');
   window.gpsLat = 0;
   window.gpsLng = 0;
   window.gpsAcc = 0;
   funcCallBack();
   }
   function sucess(position) //sucess
   {
      window.gpsLat = position.coords.latitude;
      window.gpsLng = position.coords.longitude;
      window.gpsAcc = position.coords.accuracy;
      funcCallBack();
    }
    function error()         //error
    {
      window.gpsLat   = 0;
      window.gpsLng   = 0;
      window.gpsAcc   = 0;
      funcCallBack();
    }
}

Mój problem:

Czasami, kiedy robię loginowi, nie dostaję współrzędnych GPS (przychodzą 0), a czasami uzyskuję współrzędne z ponad 2000 dokładnością (to nie jest precyzyjne).

Nawiasem mówiąc, testuję GPS w Internecie danych, kiedy korzystam z połączenia Wi-Fi działa idealnie z mniej niż 100 dokładnością.

Szczegóły:

Może narzekasz na:

  1. timeoutVal: Jest to ciasteczko z numerem 5000 w niej.
  2. funcCallBack: Jest to funkcja, która kontynuuje działanie logowania.
  3. window.gpsLat: Jest to globalny var zawierający wartość Latitude dostała z geoLocation.
  4. window.gpsLng: Jest to globalny var zawierający wartość Longitude dostała z geoLocation.
  5. window.gpsAcc: Jest to globalny var zawierający wartość Accuracy dostała z geoLocation.

Czego chcę?

Chcę rozwiązać w JavaScript lub PHP, który może uzyskać współrzędne z urządzenia mobilnego sprzętu, rodzimego GPS, a nie geolokalizacji, a gdy rodzime GPS jest wyłączony, poproś użytkownika, aby go włączyć.

10
Paulo Roberto Rosa 6 grudzień 2013, 15:01

2 odpowiedzi

Najlepsza odpowiedź

Powinieneś uzyskać lokalizację z JavaScript, a nie Php. PHP jest zdolny do wykonywania wyszukiwania IP, który jest najmniej dokładną metodą określania lokalizacji.

Droga navigator.geolocation.getCurrentPosition() działa, jest użyć najdokładniejszych obecnie dostępnych danych. W przypadku urządzenia mobilnego użyje GPS najpierw, jeśli jest włączony, a następnie Wi-Fi.

Jeśli włączony jest Native GPS JavaScript, będzie dostęp do tych danych zamiast danych Wi-Fi, ale nie ma sposobu zapobiegania czeku przeciwko danych Wi-Fi, jeśli dane GPS nie są dostępne.

Twoim najlepszym rozwiązaniem jest sprawdzenie pola dokładności, a jeśli nie jest w zasięgu, z którym jesteś zadowolony z poprosić użytkownika o włączenie GPS.

Alternatywnie, jeśli budujesz aplikację hybrydową, większość ram (phoneGap Użyj PhoneGap, aby sprawdzić, czy GPS jest włączony

12
Community 23 maj 2017, 11:45

API Geolokalizacja nie ujawnia bezpośredniego sposobu sprawdzenia, czy GPS jest włączony, czy wyłączony, ale można złapać błędy geolokalizacji i podstawy typu błędu, mogą wyciągnąć wnioski.

Na przykład. Position_Unavailable (2) Jeśli sieć jest obniżona lub nie można skontaktować się z satelity pozycjonowania. Ale nie jest pewien, że musisz poradzić sobie z pewnymi warunkami!

Sugeruję użycie WatchPostion {Zgadzam się, że ma oglądać i ciągłe zlokalizować pozycję} U można go zachować, a jeśli rzucić GPS błąd U, możesz popierać Custom Alert, aby umożliwić użytkownikowi włączenie urządzenia GPS / WiFi / Internet .. To przychodzi do sukcesu, możesz oczyścić zegarek.

 var watch =null;
 function success(position)
{
   var lat = position.coords.latitude;
   var lon= position.coords.longitude;
   if (watch != null ) 
 /*Need to take care .. as maybe there is no gps and user 
  want it off so keep attempt 3 times or some kind a way out otherwise it will 
  infinite loop */
    {
        navigator.geolocation.clearWatch(watch);
        watch = null;
    }

}
function getLatLon()
{
    var geolocOK = ("geolocation" in navigator);
    if ( geolocOK ) 
    {
        var option = {enableHighAccuracy:true, maximumAge: 0,timeout:10000 };
        watch =  navigator.geolocation.watchPosition(success, fails,  option);
    }
    else {
        //disable the current location?  
    }
}
function fails()
{
    alert("please turn on the GPS !");
}
getLatLon(); 
4
Neha 19 grudzień 2013, 06:39