2015-10-02 4 views
2

Ограничение панорамирования на карте Openlayers не имеет в виду вращение. Поэтому при повороте карты ограничение не поворачивается.Ограничить панорамирование на карте Openlayers

Этих два квадрата показывает фактическую величину и нужный номер:

enter image description here

Я определил Ограничить с опцией «степени» с учетом так:

var baseView = new ol.View({ 
    center: [241160, 5069100], 
    zoom: 11, 
    extent: [226838, 5084100, 255700, 5055200] 
}); 

Вот рабочий пример на jsfiddle для проверки этого поведения.

Как я могу реализовать, чтобы ограничить панорамирование с учетом вращения?

+0

Ваш JSFiddle, кажется, показывает, что вращение карты * делает * вращать сконструированную область, т.е. углы области находятся в одних и тех же географических точках, независимо от того, что вращение на экране. Не знаете, почему вы ожидаете какого-либо другого поведения? – kryger

+0

Вы правы, ограниченная область имеет тот же поворот, что и вид. Проблема в том, что мне нужно ограничить панорамирование областью, которая соответствует углу, который пользователь видит в карте, например, второй (горизонтальный) квадрат, который я рисую на карте. Я думал, что это будет стандартное поведение ... – geraldo

ответ

0

Не уверен, что, если вы поймете свой вопрос, если вы установите maxExtent в своем слое OSM, не будет ли он ограничен этой областью? Это то что ты хочешь?

new ol.layer.Tile({ 
     source: new ol.source.OSM(), 
     extent: maxExtent 
    }) 
+0

Определение maxExtent в слое ограничивает рендеринг («Слой не будет отображаться вне этой степени.») - но я хочу ограничить панорамирование на карте. – geraldo

+0

Есть ли map.setOptions ({limitedExtent: maxExtent}); ' подходит тебе? – Fbma

+0

Это было правильно для OL2, в OL3 это было сделано с опцией «протяженность» в представлении. Но проблема в том, что степень не соответствует вращению, как вы можете видеть в связанном jsfiddle. – geraldo