Ошибка 403 — Запрещено при загрузке Open Street Map для Win Form с помощью GMap.Net и C#

Пытаясь загрузить OSM в форму Windows с помощью C# и GMap.Net, я получаю эту ошибку.

Исключение: Удаленный сервер вернул ошибку: (403) Запрещено

    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;


    }

Не могли бы вы сообщить мне, почему это происходит и как я могу это исправить?

введите здесь описание изображения


person Behseini    schedule 20.04.2017    source источник
comment
Можете ли вы показать нам полный HTTP-запрос и ответ, например. с помощью Wireshark? Какой тайловый сервер OSM вы используете? Соблюдает ли ваша программа политику использования фрагментов, например, отправляет ли она действительный реферер?   -  person scai    schedule 21.04.2017
comment
Чтобы дополнить комментарий scai, обычно серверы тайлов (и их таблицы стилей) не превышают уровень масштабирования 18-20. Это не должно приводить к статусам HTTP 403, но остерегайтесь этого.   -  person gileri    schedule 21.04.2017
comment
@scai, спасибо за ответ, где я могу проверить сервер Tile? Я имею в виду, как я уже сказал, я использую GMap.Net, так как я могу проверить политику использования запроса или плитки?   -  person Behseini    schedule 21.04.2017
comment
Извините, я не знаю. Я никогда не использовал эту структуру.   -  person scai    schedule 22.04.2017
comment
@Behseini Вы когда-нибудь решали это? Я предполагаю, что это какая-то проблема с политикой OSM (похоже, у GMap.NET много таких проблем).   -  person peeebeee    schedule 18.01.2018
comment
Это тоже ошибка, возникшая внезапно, спустя годы использования сервиса. Переключение на BingProvider устраняет проблему, но вопрос в том, как долго. Есть ли способ связаться с openstreetmap.org и спросить их, заблокированы ли они?   -  person Ted    schedule 29.05.2019


Ответы (3)


не забудьте установить режим экземпляра на сервер/кеш и установить его на экземпляр поставщика карты открытых улиц вместо «GMapProviders.OpenStreetMap».

GMap.NET.GMaps.Instance.Mode = GMap.NET.AccessMode.ServerAndCache; 
gMapControl1.MapProvider = GMap.NET.MapProviders.OpenStreetMapProvider.Instance;

Это также могут быть настройки вашего веб-прокси, см. https://stackoverflow.com/a/19609539/2368681.

person pm101    schedule 25.04.2017

"Hi,

Все библиотеки, которые отправляют поддельный пользовательский агент и другие поддельные заголовки, чтобы запросы выглядели так, как будто они исходят из веб-браузеров, блокируются. Исправьте заголовки и установите настоящий пользовательский агент для идентификации вашего приложения, и запросы снова будут работать.

Ознакомьтесь с нашей политикой использования: https://operations.osmfoundation.org/policies/tiles/ "

Это дословный ответ от OSM.

https://github.com/judero01col/GMap.NET/pull/45 используется для отслеживания этой проблемы. И, надеюсь, исправление будет добавлено через день или два.

person prasooncc    schedule 04.06.2019

Я изменил поставщика карт с «OpenStreetMapProvider» на «GoogleMapProvider», и ошибка исчезла.

GMap.NET.GMaps.Instance.Mode = GMap.NET.AccessMode.ServerAndCache; mapView.MapProvider = GMap.NET.MapProviders.GoogleMapProvider.Instance;

person Jay    schedule 04.10.2019