使用 Nominatim API 的反向地理编码不起作用

Reverse geocoding using Nominatim API doesn't work

我需要根据一对 lat,lon 坐标

找出城市的名称

我正在使用 Nominatim API https://wiki.openstreetmap.org/wiki/Nominatim

这是一个示例查询:

https://nominatim.openstreetmap.org/reverse?format=xml&lat=40&lon=30&zoom=18&addressdetails=1

它在浏览器中工作,但是在这个 C# 代码中失败:

    ServicePointManager.Expect100Continue = true;
    ServicePointManager.DefaultConnectionLimit = 9999;
    ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

    var url = "https://nominatim.openstreetmap.org/reverse?format=xml&lat=40&lon=30&zoom=18&addressdetails=1";
    var request = (HttpWebRequest)WebRequest.Create(url);
    var response = (HttpWebResponse)request.GetResponse();
    var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();

我得到以下异常:

The underlying connection was closed: The connection was closed unexpectedly.

不知道为什么上面的代码在其他 API 上工作得很好并且查询在浏览器上工作

它总是会失败还是有时会失败?

目前一些 OSM 服务器从伦敦搬到了阿姆斯特丹。 API 和可能的其他服务(例如 Nominatim)运行 在备份硬件上,直到主服务器再次启动。这会降低性能,也可能导致偶发问题。参见 https://lists.openstreetmap.org/pipermail/talk/2018-July/081009.html . You can check the current state at https://twitter.com/osm_tech

对我来说,我正在使用 angular

进行测试
http://nominatim.openstreetmap.org/reverse?format=json&lon= lon &lat= lag

适用于本地主机,但在联机时不再适用。 只有更改为

https://nominatim.openstreetmap.org/reverse?format=json&lon= lon &lat= lag

有效。

http -> https