从经度和纬度获取国家名称的最简单方法是什么?我一直在网上看,我找到了一个ANE,但它不是免费的。我需要一个非常简单的方法,我不需要任何其他功能。它可以在线或离线。 我找到的另一个API是Geonames API,但我似乎无法通过提供经度和纬度来了解如何在AS3中使用它来获取国家名称。
非常感谢任何帮助。
答案 0 :(得分:1)
正如您在问题中提到的那样,您可以使用findNearby Geonames's WebService通过URLLoader
对象加载数据(XML或JSON):
.transform(babelify, {
presets:["es2015", "react"]
})
该请求返回的XML数据:
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
}
对于此代码,我使用了可用的模拟帐户来测试Geonames的Web服务,但您应该创建自己的帐户才能使用它。
您还可以在Google Maps Geocoding API之后使用getting a key:
<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>
然后
url = 'https://maps.googleapis.com/maps/api/geocode/xml?latlng=' + lat + ',' + lng + '&key=YOUR_API_KEY_GOES_HERE';
XML内容的位置:
// ...
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
}
希望可以提供帮助。