Как прервать выдачу запроса на плитку карты с OpenLayers при изменении масштаба? - PullRequest
5 голосов
/ 20 декабря 2011

У меня есть карта OpenLayers со слоем TMS.При каждом изменении масштаба моя карта выполняет около 56 запросов на листы карты (в зависимости от размера карты / экрана).Если пользователь быстро увеличивает или уменьшает масштаб, все эти запросы фрагментов карты располагаются в очереди по порядку, и я понимаю, что запросы фрагментов карты от OpenLayers не вызываются асинхронно.Поэтому, если пользователь быстро увеличивает или уменьшает масштаб, в конечном итоге возникает множество запросов на плитки карты, которые больше не нужны, и те, которые необходимы, не будут загружаться, пока не будут выполнены все предыдущие запросы.

Есть лиМожно ли отменить ожидающие запросы плитки карты при изменении масштаба?Если не через OpenLayers, есть ли какой-нибудь способ прервать все ожидающие запросы на определенный URL?

Ответы [ 2 ]

2 голосов
/ 21 августа 2012

Обновление до OpenLayers 2.12 или выше, поскольку начиная с этой версии очередь плиток была улучшена и теперь будет избегать старых запросов. Цитировать из Примечания к выпуску OpenLayers 2.12 :

Код плитки был пересмотрен, поэтому загрузка плитки в слоях сетки сейчас сделано в очереди. Очередь плиток дает больше контроля над плиткой запросы отправляются на сервер. Ожидающие запросы на плитки, которые не являются необходимо больше (например, после увеличения или панорамирования), что повышает производительность и снижает нагрузку на сервер.

1 голос
/ 21 августа 2012

Когда вы определили масштабирование с помощью колеса мыши, вы можете использовать следующий код, чтобы предотвратить загрузку плиток для всех промежуточных уровней масштабирования:

new OpenLayers.Control.Navigation({
    "zoomWheelEnabled": true,
    "mouseWheelOptions": {
        "interval": 250, 
        "cumulative": true
    }
})
...