2017-01-10 14 views
1

Используется ли ol.view minZoom и maxZomm в дополнение к разрешениям в карте без webmercator? ОК? Действительно ли minZoom и maxZoom игнорируются? Или они могут вызвать проблемы?OL3 Пользовательские proj/резолюции и minZoom/maxZoom

У меня есть поведение, которое я не могу понять. Вот моя проблема:

Я использую услугу WMTS (EPSG: 2154) в качестве базовой карты на карте ol3 (EPSG: 2154 тоже). я установил как Посмотреть резолюции и ol.tilegrid.WMTS резолюции с:

var resolutions = [305.748084412797, 152.87417449832975, 76.43695495723364, 38.21860977054807, 19.109304885274035, 9.554652442637018, 4.777326221318509, 2.3886631106592544, 1.1943315553296272, 0.5971657776648136, 0.2984505969011562, 0.13229193125051253 ]; 

и использование matrixids в ol.tilegrid.WMTS

var matrixids= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ,10 ,11]; 

Карта ОК 12 уровней масштабирования доступны. Идентификаторы матрицы базы данных согласуются с уровнем масштабирования карты.

Но, пытаясь ограничить уровни масштабирования, я добавил «minZoom» и «maxZoom» в опции просмотра в дополнение к «разрешениям».

Если minZoom = 0 и maxZoom = 8, я все же могу масштабировать 12 уровней, а масштабирование карты согласуется с вызываемой базовой табличной матрицей.

Если minZoom = 4 и MaxZoom = 9, можно увеличить более чем 12 уровней ... но

  • уровень Масштаб карты начинается на 4 и доходит до 15 (переход от начальных уровней масштабирования = minZoom множества в ol.View)
  • базовой карты TileMatrix теперь unconsistent с картой масштабом: на карте трансфокаторе 4 он запрашивает базовую карту масштаб 0 (без смещения применяется к BaseMap вызовам)

спасибо!

+0

Было бы полезно, если вы опубликуете живой пример (jsfiddle или фрагмент рабочего кода будет хорошо) – Icarus

+0

вот скрипка, просто раскомментируйте minzoom maxzoom, чтобы увидеть различия. https://jsfiddle.net/4emke5c1/1/ – guimicmoc

+0

Все еще не идеально, но вы можете добавить собственное поведение к событию 'map.getView(). on ('change: resolution', function (e) {});' Я отредактировал ваш jsfiddle: https://jsfiddle.net/4emke5c1/2/ – Icarus

ответ

0

С minZoom и MaxZoom создают проблемы с разрешением, я бы порекомендовал вам добавить пользовательское поведение в случае «изменения: разрешение» следующим образом:

map.getView().on('change:resolution', function(e) { 
    // Set Zoom 
}); 

Я отредактировали jsfiddle

+0

Кнопка Zoom и MouseWheel Zoom имеют различное поведение относительно центра карты, поэтому для увеличения максимального и минимального зума в «change: resolution» мне нужно было получить центр карты и снова установить его. Если это не делает кастрюлю. – guimicmoc