2013-08-03 1 views
1

Я пытаюсь получить код страны текущего местоположения пользователя с использованием Geonames Servcie API. И я верю, что API сервиса geonames вернет мне код страны с двумя буквами вместо трех буквенного кода страны, и мне нужен код страны с тремя буквами. Поэтому для этого я сделал сопоставление между двухбуквенным кодом страны и трехбуквенным кодом страны.Как получить информацию о кодах стран, используя службу geonames api, а не объект объекта местоположения html5

Ниже мой код, а некоторые - как, мое поле предупреждения не работает вообще. Я почти уверен, что у меня что-то не хватает?

<html> 
    <head> 
     <title>Visitor's location</title> 

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
    <script> 

    $(document).ready(function() { 
     $.getJSON('http://ws.geonames.org/countryCode', { 
      lat: position.coords.latitude, 
      lng: position.coords.longitude, 
      type: 'JSON' 
     }, function(result) { 
      alert('Country: ' + result.countryName + '\n' + 'Code: ' + result.countryCode); 
     $('#newURL').attr('href','https://www.google.com&jobid='+result.countryCode); 
     }); 
}); 


    </script> 
    </head> 
    <body> 

    <a id="newURL">URL</a> 

    </body> 
</html> 

Что плохого я делаю в своем вышеприведенном коде? Ниже приведена ошибка, которую я получаю на консоли.

Uncaught ReferenceError: position is not defined

+0

Я думаю, что ошибка довольно ясно о том, что случилось, не так ли? –

+0

Возможно, вы не устанавливаете позицию ??? – Daniele

+0

Да ... Но я не уверен, как я собираюсь получить этот объект позиции, не попросив пользователя включить физическое местоположение. Или для этого есть какой-то другой способ? – ferhan

ответ

6

Использование HTML5 Geolocation вы могли бы сделать:

$(document).ready(function() { 
    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(function(position) { 
      $.getJSON('http://ws.geonames.org/countryCode', { 
       lat: position.coords.latitude, 
       lng: position.coords.longitude, 
       type: 'JSON' 
      }, function(result) { 
       alert('Country: ' + result.countryName + '\n' + 'Code: ' + result.countryCode); 
       $('#newURL').attr('href','https://www.google.com&jobid='+result.countryCode); 
      }); 
     }); 
    } 
}); 

FIDDLE

Или вы можете использовать службу:

$(document).ready(function() { 
    $.getJSON("http://freegeoip.net/json/", function(result){ 
     alert('Country: ' + result.country_name + '\n' + 'Code: ' + result.country_code); 
     $('#newURL').attr('href','https://www.google.com&jobid='+result.country_code); 
    }); 
}); 

FIDDLE

+0

Я не могу использовать geonames api для сервисной части? – ferhan

+0

Я не очень хорошо знаю геонамы, но если они предлагают сервис геолокации IP-поиска, вы можете, конечно, использовать это. Если они не предлагают ничего подобного, нет способа получить координаты, и большинство служб, которые дают вам координаты, например, тот, который я использовал выше, также даст вам код страны и страну, поэтому не обязательно смотреть на нее еще раз? – adeneo