APIを使用してジオネームを検索し、都市名と座標を取得するにはどうすればよいですか?APIへのリンク
11015 次
1 に答える
4
もちろん、それはあなたが実行したい実際の検索に完全に依存します。で始まるイギリスのすべての場所を検索するとしLon
ます。この検索を実行するURL(例として、実際の検索では大幅に変更される可能性があります)は次のとおりです。
http://api.geonames.org/search?name_startsWith=lon&country=GB&maxRows=10&username=demo
これをブラウザにポップして、結果を確認できます。
<geonames style="MEDIUM">
<totalResultsCount>334</totalResultsCount>
<geoname>
<toponymName>London</toponymName>
<name>London</name>
<lat>51.50853</lat>
<lng>-0.12574</lng>
<geonameId>2643743</geonameId>
<countryCode>GB</countryCode>
<countryName>United Kingdom</countryName>
<fcl>P</fcl>
<fcode>PPLC</fcode>
</geoname>
<geoname>
<toponymName>Lone</toponymName>
<name>Lone</name>
<lat>58.33333</lat>
<lng>-4.88333</lng>
<geonameId>2643732</geonameId>
<countryCode>GB</countryCode>
<countryName>United Kingdom</countryName>
<fcl>P</fcl>
<fcode>PPL</fcode>
</geoname>
<!-- and so on ... -->
</geonames>
lat
各の下にandlng
要素が必要であることに注意してくださいgeoname
。LINQ to XMLを使用する場合(名前空間宣言に含める)System.Linq
:System.Linq.Xml
var xml = XElement.Load("http://api.geonames.org/search?name_startsWith=lon&country=GB&maxRows=10&username=demo");
var locations = xml.Descendants("geoname").Select(g => new {
Name = g.Element("name").Value,
Lat = g.Element("lat").Value,
Long = g.Element("lng").Value
});
foreach (var location in locations)
{
Console.WriteLine("{0}: {1}, {2}", location.Name, location.Lat, location.Long);
}
もちろん、これらの値を別の方法で使用することを選択することもできますし、解析Lat
しLong
てdoubleに変換することもできます。
于 2012-05-21T02:48:40.080 に答える