Я занимаюсь этим целый день, и, честно говоря, у меня нет идей. У меня есть некоторые слои WMS, которые я хотел бы отображать/не отображать в зависимости от текущего уровня масштабирования. Да, я прошел через документы API, и они кажутся ясными как день, но я следую всему, что предлагается, и я не получаю желаемых результатов :(Отображение уровня WMS на основе уровня масштабирования
Это был один из источников, на которые я смотрел : http://trac.osgeo.org/openlayers/wiki/SettingZoomLevels
Тогда, чтобы усугубить ситуацию, я узнал, что если у вас есть базовый слой Open Street Map, отображаемый при загрузке, он, кажется, ограничивает ваш контроль над номер numZoomLevels карты, именно то, что мне было нужно, так как я НЕ хочу использовать это как мой базовый уровень загрузки ...
Так что мои вопросы:
Что я делаю неправильно? Верно ли, что при управлении базовым слоем Open Street Map при загрузке на самом деле нет обходного пути для управления уровнями масштабирования? Или есть что-то, чего я просто не знаю?
Вот некоторые из моих попыток кода: Возьмите 1: уровень tib_villages должен отображаться только тогда, когда уровень масштабирования 8-10, не работает!
var options = {
controls: [new OpenLayers.Control.Navigation()], //Needed to use GeoExt controls such as the zoomslider
maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34),
units: 'm',
numZoomLevels: null, //setting the map's zoom levels to null
allOverlays: false
}
var osm = new OpenLayers.Layer.OSM(); //MY base layer
//MY overlay layer
var tib_villages = new OpenLayers.Layer.WMS(
"Villages", "http://localhost:8080/geoserver/wms", {layers: 'cite:tib_villages', transparent: true, numZoomLevels: 10, minZoomLevel: 8}, {isBaseLayer: false, displayInLayerSwitcher: true, visibility: true}
);
Take 2: tib_villages слой должен показывать только тогда, когда уровень масштабирования 8-10, карта должна иметь только 10 уровней масштабирования, но вместо этого имеет 19 как Open Street Map Layer навязывает его, не работает !
var options = {
controls: [new OpenLayers.Control.Navigation()], //Needed to use GeoExt controls such as the zoomslider
maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34),
units: 'm',
numZoomLevels: 10, //setting the map's zoom levels to 10 only
allOverlays: false
}
var osm = new OpenLayers.Layer.OSM(); //MY base layer
//MY overlay layer
var tib_villages = new OpenLayers.Layer.WMS(
"Villages", "http://localhost:8080/geoserver/wms", {layers: 'cite:tib_villages', transparent: true, numZoomLevels: null, minZoomLevel: 8}, {isBaseLayer: false, displayInLayerSwitcher: true, visibility: true}
)
;
Take 3: После того, как вы избавились от базового слоя Open Street Map при загрузке, карта имеет только 10 уровней масштабирования, как указано, но уровень tib_villages должен отображаться только тогда, когда уровень масштабирования 8-10, не работает!
var options = {
controls: [new OpenLayers.Control.Navigation()], //Needed to use GeoExt controls such as the zoomslider
maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34),
units: 'm',
numZoomLevels: 10, //setting the map's zoom levels to 10
allOverlays: false
}
//MY overlay layer
var tib_villages = new OpenLayers.Layer.WMS(
"Villages", "http://localhost:8080/geoserver/wms", {layers: 'cite:tib_villages', transparent: true, numZoomLevels: 10, minZoomLevel: 8}, {isBaseLayer: false, displayInLayerSwitcher: true, visibility: true}
);
Все ваши предложения искренне оценены!
elshae
** @ elshae **: Я бы поставил ваш вопрос на http://gis.stackexchange.com/ или в рассылке *[email protected]*. – Chau
Хмм я пойду проверить gis.stackexchange.com, и я отправляю сообщение на [email protected], но у меня часто нет ответов: -/ – elshae