错误403 - 禁止加载打开街道地图以使用GMap.Net和C#赢取表单

时间:2017-04-20 22:50:02

标签: openstreetmap gmap.net

尝试使用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;


    }

你能否告诉我为什么会这样,以及如何解决这个问题?

enter image description here

3 个答案:

答案 0 :(得分:2)

不要忘记将实例模式设置为服务器/缓存并将其设置为开放街道地图提供程序的实例,而不是' GMapProviders.OpenStreetMap'

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;