1

APIを使用してジオネームを検索し、都市名と座標を取得するにはどうすればよいですか?APIへのリンク

4

1 に答える 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.LinqSystem.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);
}

もちろん、これらの値を別の方法で使用することを選択することもできますし、解析LatLongてdoubleに変換することもできます。

于 2012-05-21T02:48:40.080 に答える