如何从纬度和经度获取国家名称

4

如何使用c#从经纬度获得国家名称?我正在使用Bing.Map API。

Location location12 = new Location(location.Latitude, location.Longitude);
MapLayer.SetPosition(pin, location12);
Map.Children.Add(pin);
string placeName = GetPlaceNameForCoordinates(location.Latitude, location.Longitude);   

2
这是使用Bing.Maps API吗?在你的问题中明确说明这一点会很有价值。 - Jon Skeet
yes using Bing.Maps API - ahmad
2个回答

3
您需要使用某种反向地理编码API。例如:

如果您已经在使用Bing.Maps SDK,则应使用Map.SearchManager属性获取SearchManager,然后使用ReverseGeocodeAsync方法。特别是,请注意评论中指出的,混合使用其他SDK显示数据的API可能会违反两者的条款和条件:请小心选择单个应用程序中使用的技术。(即使此问题提供了使用Bing Maps SDK的示例代码,我仍然保留上面的列表,以帮助其他可能具有稍微不同背景的人。)

例如:
var manager = map.SearchManager;
var request = new ReverseGeocodeRequestOptions(location) {
    IncludeEntityTypeFlags = ReverseGeocodeEntityType.CountryRegion
};
var response = await manager.ReverseGeocodeAsync(
    new ReverseGeocodeRequestOptions(location) { );
// Use the response

如果您决定使用Geonames API,数据也可以下载以供离线使用。

只是一个快速提示。混合使用Google API和Bing Maps违反了两个平台的使用条款。最好在使用Bing Maps控件时坚持使用Bing Maps API。如果这是需要许可证的生产应用程序,这也会使事情更便宜。 - rbrundritt
@rbrundritt:说得好,我之前不知道这一点。会进行编辑以澄清,同时保留列表供其他可能不在同一情况下的用户使用。 - Jon Skeet

-1

我创建了一个 Github 项目,其中包含无需 API 调用即可完成此操作的示例代码。

请点击这里查看。

非常简单的国家名称和 ID 将被返回。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接