2015-07-01 3 views
0

Я хочу реализовать геолокацию в своем приложении.Геолокация не работает на смартфоне

if (navigator.geolocation) {    
      navigator.geolocation.getCurrentPosition(getPosition, errorGettingPosition); 
} 

function getPosition(position) { 
      var myLatitude = position.coords.latitude; 
      var myLongitude = position.coords.longitude; 
      var radiusEarth = 6371; 

      myLongitude = myLongitude * (Math.PI/180); 
      myLatitude = myLatitude * (Math.PI/180); 

      var x0 = myLongitude * radiusEarth * Math.cos(myLatitude); 
      var y0 = myLatitude * radiusEarth; 

      for (var i = 0; i < list.length; i++) { 
       var vendorLongitude = list[i].Longitude = list[i].Longitude * (Math.PI/180); 
       var vendorLatitude = list[i].Latitude = list[i].Latitude * (Math.PI/180); 
       var x1 = vendorLongitude * radiusEarth * Math.cos(vendorLatitude); 
       var y1 = vendorLatitude * radiusEarth; 

       var dx = x0 - x1; 
       var dy = y0 - y1; 

       var d = Math.sqrt((dx * dx) + (dy * dy)); 

       if (d < 1) { 
       list[i].Distance = Math.round(d * 1000) + " m"; 
       } else { 
       list[i].Distance = Math.round(d * 10)/10 + " km"; 
       } 
      } 
      //add vendors to scope 
      $scope.vendors = list; 
} 

function errorGettingPosition(err) { 
      if (err.code == 1) { 
       alert("User denied geolocation."); 
      } 
      else if (err.code == 2) { 
       alert("Position unavailable."); 
      } 
      else if (err.code == 3) { 
       alert("Timeout expired."); 
      } 
      else { 
       alert("ERROR:" + err.message); 
      } 
} 

Я написал эти коды. В браузере на компьютерах он будет работать отлично, но если я установлю это приложение на своем смартфоне (Android, версия 5.1.1), это не сработает, и я не знаю почему. Он также не входит в функцию ошибки на смартфоне.

Знаете ли вы, что делать?

ответ

0

это один может входить в ошибки функцию

function initiate_watchlocation() { 
    if (watchProcess == null) { 
     watchProcess = navigator.geolocation.watchPosition(onSuccess, onError); 
    } 
} 

var onSuccess = function(position) { 
    var myLatitude = position.coords.latitude; 
    var myLongitude = position.coords.longitude; 

    }; 

    function onError(error) { 
      alert_box('code: ' + error.code + '\n' + 
       'message: ' + error.message + '\n'); 
    } 

рассмотреть возможность запуска его в document.ready.

+0

Я также не вхожу в функцию ошибки. – user3679607

+0

Да, я мог видеть. используйте 'watchPosition' и попытайтесь вызвать эту функцию на готовом документе. –

+0

У меня есть приложение, нет функции document.ready. – user3679607

0

Это особенность. Когда приложение загружает сайт, оно начинается с функции getCurrentPosition(). Затем я могу пройти, ничего не происходит. Но через несколько секунд (около 5) он пройдет через обратный вызов успеха. И я сохраняю результаты в $ scope, потому что я работаю с AngularJS. Но в графическом интерфейсе я ничего не могу узнать о долготах и ​​широте позиций.

+0

Обнаружено: $ scope. $ Apply() помогло мне получить фактические данные. – user3679607

Смежные вопросы