2015-11-11 102 views
-1

從經度和緯度獲取國名的最簡單方法是什麼?我一直在尋找互聯網,我找到了一個ANE,但它不是免費的。我需要一個非常簡單的方法,我不需要任何其他功能。它可以在線或離線。 我發現的另一個API是Geonames API,但我似乎無法找到如何在AS3中使用它以通過提供經度和緯度來獲取國家名稱。如何從AIR中獲取經緯度的國家名稱?

任何幫助,非常感謝。

+0

由於在AIR中沒有內置的方法來執行此操作,所以必須使用其他一些API。 – Brian

回答

1

正如你在你的問題中提到,您可以通過一個URLLoader對象使用findNearby Geonames's WebService,你可以用它來加載數據(XML或JSON):

var lat:Number = 37.26801, 
    lng:Number = -115.80031; 

var url:String = 'http://api.geonames.org/findNearby?lat=' + lat + '&lng=' + lng + '&username=demo'; 

var url_request:URLRequest = new URLRequest(url); 

var url_loader:URLLoader = new URLLoader(); 
    url_loader.addEventListener(Event.COMPLETE, on_DataLoad); 
    url_loader.load(url_request); 

function on_DataLoad(e:Event): void 
{ 
    var xml:XML = new XML(e.target.data); 
    trace(xml.geoname.countryName);   // gives : United States 
} 

通過請求返回的XML數據:

<geonames> 
    <geoname> 
     <toponymName>Groom Lake</toponymName> 
     <name>Groom Lake</name> 
     <lat>37.26801</lat> 
     <lng>-115.80031</lng> 
     <geonameId>5505124</geonameId> 
     <countryCode>US</countryCode> 
     <countryName>United States</countryName> 
     <fcl>H</fcl> 
     <fcode>LK</fcode> 
     <distance>0.07718</distance> 
    </geoname> 
</geonames> 

對於這個代碼,我使用的可用來測試國地名的Web服務的模擬賬戶,但你應該創建自己的帳戶才能使用它。

您還可以使用Google Maps Geocoding APIgetting a key

url = 'https://maps.googleapis.com/maps/api/geocode/xml?latlng=' + lat + ',' + lng + '&key=YOUR_API_KEY_GOES_HERE'; 

然後

// ... 

function on_DataLoad(e:Event): void 
{ 
    var xml:XML = new XML(e.target.data); 

    trace(xml.result[0].address_component.(type[0] == 'country').long_name);  // gives : United States 
} 

當XML內容爲:

<GeocodeResponse> 
    <status>OK</status> 
    <result> 
     <type>route</type> 
     <formatted_address>Unnamed Road, Nevada, United States</formatted_address> 
     <address_component> 
      <!-- ... --> 
     </address_component> 
     <address_component> 
      <!-- ... --> 
     </address_component> 
     <address_component> 
      <!-- ... --> 
     </address_component> 
     <address_component> 
      <long_name>United States</long_name> 
      <short_name>US</short_name> 
      <type>country</type> 
      <type>political</type> 
     </address_component> 
     <geometry> 
      <!-- ... --> 
     </geometry> 
     <place_id> 
      <!-- ... --> 
     </place_id> 
    </result> 
    <!--   
     ...   
    --> 
</GeocodeResponse> 

希望能有所幫助。

+0

謝謝soo !!! –

相關問題