Я занимаюсь этим целый день и, честно говоря, у меня нет идей.У меня есть несколько слоев WMS, которые я хотел бы отображать / не отображать в зависимости от текущего уровня масштабирования.Да, я просмотрел документы по API, и они, кажется, ясны как день, но я следую всему, что предлагается, и не получаю желаемых результатов: (
Это был один из источников, которые япосмотрел на: 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}
);
Взять 2: слой tib_villages должен отображаться только при уровне масштабирования 8-10, на карте должно быть только 10 уровней масштабирования, но вместо этого в качестве O используется 19Pen 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}
)
;
Взять 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