#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. Да, точно. Я хотел бы использовать элементы управления масштабированием, чтобы изменять уровень детализации, сохраняя координаты постоянными. Например, я мог бы начать с карты, отображающей только топографические объекты. При увеличении видимая область должна оставаться неизменной, но слой плитки должен измениться, чтобы границы стран стали видимыми.