2016-07-29 3 views
0

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

if ((navigator.geolocation)&&(location!=null)) { 
    var locations = null; 
    window.navigator.geolocation.getCurrentPosition(function(position){ 
     var latitude = position.coords.latitude; 
     var longitude = position.coords.longitude; 
     locations = latitude+'/'+longitude; 
     show_all_weather_components(); 
     console.log("1"); 
    }); 
} 
/* If location is not found the set default location as USDC0001, which is default code for washington DC. */ 

var locations= !locations?"USDC0001":locations; 
console.log("2"); 

Я получаю 2 первых в своей консоли. то есть. Он всегда устанавливает адрес по умолчанию, а не фактический адрес пользователя. Я знаю, это звучит смешно, но есть ли способ избежать «неблокирующего» режима здесь. Или есть другой способ захватить местоположение пользователя. Я также попробовал ip-базу данных Api, но это не сработало с точностью.

В какой-то момент я думал о задержке чуть ниже части условия if, но из-за разных модулей этого приложения погоды моя страница уже очень медленная. Любая идея будет оценена по достоинству. Спасибо

+0

места всегда нулевой, так что если условие не –

+0

navigator.geolocation не является Jquery часть, но HTML 5. Также предложит пользователю свое местоположение на странице загрузки. Пока пользователь не разделит его, вы не сможете получить пользовательское местоположение пользователя. –

+0

Я получаю это, даже если раньше мне разрешалось делиться местоположением, это занимает время, а console.log («2») выполняется раньше, чем console.log («1»). – santosh433

ответ

1

Вы должны использовать другие аргументы getCurrentPosition. Вот пример: переменная

<!DOCTYPE html> 
<html> 
<head> 
    <title>Test</title> 
</head> 
<body> 
    <div id="result"></div> 
    <script> 
    var result = document.getElementById('result'); 
    if (navigator.geolocation && location != null) {   
     window.navigator.geolocation.getCurrentPosition(function(position){ 
     result.text = position.coords.latitude + '/' + position.coords.longitude; 
     }, function(error) {   
     switch(error.code) { 
      case error.PERMISSION_DENIED: 
      result.innerHTML = "Denied request for Geolocation." 
      break; 
      case error.POSITION_UNAVAILABLE: 
      result.innerHTML = "Location unavailable." 
      break; 
      case error.TIMEOUT: 
      result.innerHTML = "Location request timed out." 
      break; 
      case error.UNKNOWN_ERROR: 
      result.innerHTML = "An unknown error occurred." 
      break; 
     } 
     }, { timeout: 1000, maximumAge: 1000 }); 
    } 
    </script> 
</body> 

+0

Спасибо, любая вещь, которая отсутствовала, была третьим параметром. – santosh433

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