Брошюра: обнаружение попытки масштабирования при minZoom и постоянный уровень плитки при масштабировании

#javascript #leaflet

#javascript #листовка

Вопрос:

Я использую свои собственные плитки для негеографического приложения и пытаюсь реализовать внутреннюю логику масштабирования, которая должна быть независимой от сервера плиток, но используя обнаружение масштабирования в Leaflet.

 old layer, zoom level: 2 -> ZOOM IN, load another tile layer  -> new layer, zoom level: 2
new layer, zoom level: 2 <- ZOOM OUT, load another tile layer <- old layer, zoom level: 2
  

Это можно сделать, удалив вручную старую настройку слоя map.setZoom(oldZoom) в zoomend. Однако в процессе уровень масштабирования будет временно изменен на 1, а старый слой будет удален только после анимации масштабирования.

 map.on('zoom', testZoom);  

function testZoom() {
         if(newZoom == 1 amp;amp; prevZoom == 2) {
            map.setZoom(2);
            map.removeLayer(activeTileLayer);
            map.addLayer(newLayer);
          }
}
  

Подход может заключаться в том, чтобы обнаруживать, когда пользователь пытается увеличить масштаб при minZoom, но я не выяснил, как это может быть возможно.

Комментарии:

1. Вы вообще пробовали использовать min maxZoom TileLayer?

2. @IvanSanchez Уверен, что у меня есть — но, вероятно, я неправильно сформулировал свой вопрос. Чего я хочу достичь: если пользователь увеличивает масштаб при minZoom, я бы хотел сохранить свой уровень масштабирования, но загрузить плитки с другого сервера плиток, то есть увеличить детализацию без увеличения количества плиток. Для этого мне нужно было бы знать, когда пользователь пытается увеличить масштаб за пределы minZoom / maxZoom.

3. Если я правильно понимаю, на уровне масштабирования 2 вы хотели бы НАРУШИТЬ работу с масштабированием, чтобы запрос пользователя на изменение масштаба не приводил к фактическому изменению масштаба, а только к изменению слоя плитки?

4. Да, точно. Я хотел бы использовать элементы управления масштабированием, чтобы изменять уровень детализации, сохраняя координаты постоянными. Например, я мог бы начать с карты, отображающей только топографические объекты. При увеличении видимая область должна оставаться неизменной, но слой плитки должен измениться, чтобы границы стран стали видимыми.