2015-11-11 4 views
-1

Каков самый простой способ получить название страны из долгот и широт. Я смотрю в Интернете, и я нашел ANE, но это не бесплатно. Мне нужен очень простой способ, мне не нужны никакие другие функции. Он может быть онлайн или офлайн. Другим API, который я нашел, является API Geonames, но я не могу понять, как его использовать в AS3, чтобы просто получить название страны, предоставив долготы и широты.Как получить название страны от долгот и широт в AIR?

Любая помощь очень ценится.

+0

Поскольку в AIR нет встроенного способа сделать это, вам придется использовать какой-либо другой API. – Brian

ответ

1

Как вы упомянули в вашем вопросе, вы можете использовать findNearby Geonames's WebService, которые вы можете использовать для загрузки данных (XML или JSON) с помощью URLLoader объекта:

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> 

для этого кода, я использовал демо-счет доступного для тестирования WebServices в GEONAMES, но вы должны создать свой собственный счет, чтобы использовать его.

Вы также можете использовать Google Maps Geocoding API после getting 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

Спасибо, много! –