尝试使用C#和GMap.Net在Windows窗体上加载OSM我收到此错误
异常:远程服务器返回错误:(403)Forbidden
private void Form1_Load(object sender, EventArgs e)
{
gMapControl1.DragButton = MouseButtons.Left;
gMapControl1.CanDragMap = true;
gMapControl1.MapProvider = GMapProviders.OpenStreetMap;
gMapControl1.Position = new GMap.NET.PointLatLng(54.6961334816182, 25.2985095977783);
gMapControl1.MinZoom = 0;
gMapControl1.MaxZoom = 24;
gMapControl1.Zoom = 9;
gMapControl1.AutoScroll = true;
}
你能否告诉我为什么会这样,以及如何解决这个问题?
答案 0 :(得分:2)
GMap.NET.GMaps.Instance.Mode = GMap.NET.AccessMode.ServerAndCache;
gMapControl1.MapProvider = GMap.NET.MapProviders.OpenStreetMapProvider.Instance;
它也可能是您的网络代理设置,请参阅 https://stackoverflow.com/a/19609539/2368681
答案 1 :(得分:1)
“嗨,
所有发送伪造的用户代理和其他伪造的标头以使请求看起来像来自网络浏览器的库都被阻止了。修复标头,并设置一个真正的User-Agent来标识您的应用,然后请求将再次起作用。
请查看我们的使用政策: https://operations.osmfoundation.org/policies/tiles/“
这是OSM的逐字答复。
https://github.com/judero01col/GMap.NET/pull/45被用来跟踪此问题。并希望在一两天内合并一个修补程序。
答案 2 :(得分:1)
我将地图提供者从“ OpenStreetMapProvider”更改为“ GoogleMapProvider”,错误消失了。
GMap.NET.GMaps.Instance.Mode = GMap.NET.AccessMode.ServerAndCache; mapView.MapProvider = GMap.NET.MapProviders.GoogleMapProvider.Instance;