C# - 在没有 API 的情况下从 latitude/longitude 获取国家/地区

C# - Get Country from latitude/longitude without API

是否可以使用 C# 库或有关地理坐标国家的更新数据库从纬度和经度获取国家/地区名称 没有 API 之类的 Google 地图' JavaScript API ?

您可以使用 GeoNames and download a local database here.

因此,这是一个示例查询,您可以使用它从 lat/long 坐标获取最近的条目。

var query = new SQLiteCommand("select name,latitude,longitude,country_code,feature_code from geoloc order by ((latitude - @lat) * (latitude - @lat) + (longitude - @lng) * (longitude - @lng)) LIMIT 1, cn);

你可以的。如果不需要太精确,可以使用 table 和国家坐标。并确定最近的国家坐标。但这是个糟糕的方法。

好的解决方案是获取国家/地区边界的 KML 文件。但是你需要好的算法来确定你的观点在哪个国家的边界​​。描述了寻找点和多边形位置的算法here. Also there are some answers on Whosebug 1, 2,但它是针对平面的。

另一种可能的方法是用一些小的步长(例如 30'')预先计算国家的坐标,并通过找到离您的点最近的预先计算的点来确定国家/地区。您可以通过大量在线服务预先计算国家/地区。

我创建了一个 github 项目,它将根据 gps 点(纬度;经度)获取国家或美国州 见 here

如果找到,将 return 一个 locationInfo class with Id and Name

也可用作 nuget package