2013-08-03 55 views
1

我試圖使用Geonames Servcie API獲取用戶當前位置的國家/地區代碼。我相信geonames服務API將返回給我兩個字母的國家代碼而不是三個字母的國家代碼,我需要三個字母的國家代碼。爲此,我已經在兩個字母的國家代碼和三個字母的國家代碼之間進行了映射。如何使用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地理位置,你可以這樣做:

$(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

我真的不知道geonames,但如果他們提供IP查找地理定位服務,您當然可以使用它。如果他們沒有提供這樣的東西,那麼就沒有辦法獲得座標,並且大多數給你座標的服務,就像我上面使用的座標,也會給你countrycode和countryname,所以它不需要看它再次上漲? – adeneo

相關問題