Страница 1 из 2
					
				Как сделать LayerSwitcher своими руками?
				Добавлено: 12 авг 2010, 11:20
				 Naphtizin
				Здравствуйте. У меня появилась необходимость в OpenLayers вынести LayerSwitcher за пределы карты. То есть убрать его с карты и создать функционал переключения слоев вручную. 
Вот здесь читал о подобном, но как реализовать так и не понял. Подскажите как сделать задуманное.
 
			
					
				Re: Как сделать LayerSwitcher своими руками?
				Добавлено: 12 авг 2010, 11:37
				 Mavka
				
			 
			
					
				Re: Как сделать LayerSwitcher своими руками?
				Добавлено: 12 авг 2010, 11:53
				 Naphtizin
				Этот вариант как я понял предполагает просто вынос стандартного LayerSwitcher за пределы карты. А можно ли сделать свой LayerSwitcher, то есть сделать свои радиобатоны и чекбоксы?
			 
			
					
				Re: Как сделать LayerSwitcher своими руками?
				Добавлено: 12 авг 2010, 12:43
				 Mavka
				Готовый LayerSwitcher не подходит, 
вручную переключать слои тоже. Непонимаю...
 
			
					
				Re: Как сделать LayerSwitcher своими руками?
				Добавлено: 12 авг 2010, 14:27
				 Naphtizin
				Вот именно, что надо вручную. Как я понял нужна функция setBaseLayer(). Пробую выполнить что-то типа такого:
Код: Выделить всё
function layerswitch() {
                        map.setBaseLayer(demolayer2)
};
не выходит.
 
			
					
				Re: Как сделать LayerSwitcher своими руками?
				Добавлено: 12 авг 2010, 14:37
				 Mavka
				И чаво говорит? Не хочу не буду?
			 
			
					
				Re: Как сделать LayerSwitcher своими руками?
				Добавлено: 12 авг 2010, 15:05
				 Naphtizin
				Молчит.
			 
			
					
				Re: Как сделать LayerSwitcher своими руками?
				Добавлено: 12 авг 2010, 15:25
				 Mavka
				И в firebugs? У меня очень хорошо переключает
			 
			
					
				Re: Как сделать LayerSwitcher своими руками?
				Добавлено: 12 авг 2010, 16:42
				 Naphtizin
				Не, не переключает.Привожу код:
Код: Выделить всё
      <script>
        var map;
        function init() {
           map = new OpenLayers.Map('map');
           map.addControl(new OpenLayers.Control.LayerSwitcher());
        var wms = new OpenLayers.Layer.WMS( "OpenLayers WMS",
            "http://labs.metacarta.com/wms/vmap0", {layers: 'basic'} );
            var ghyb = new OpenLayers.Layer.Google(
                "Google Hybrid",
                {type: G_HYBRID_MAP, numZoomLevels: 20}
            );
        map.addLayers([wms, ghyb]);
        map.zoomToMaxExtent();
        };
        function layerswitch() {
                                map.setBaseLayer(ghyb)
        };
      </script>
Функцию вызываю кнопкой:
Код: Выделить всё
<input type="button" value="Слой 2" onClick="layerswitch()">
Если не трудно ткните пальцем где накосячил.
 
			
					
				Re: Как сделать LayerSwitcher своими руками?
				Добавлено: 12 авг 2010, 16:48
				 Mavka
				Сделать ghyb глобальной
а здесь без var:
 
			
					
				Re: Как сделать LayerSwitcher своими руками?
				Добавлено: 12 авг 2010, 16:55
				 Naphtizin
				Спасибо большое, вот уж не думал, что проблема в этом может быть. Вот что значит нехватка знаний javascript'а.
			 
			
					
				Re: Как сделать LayerSwitcher своими руками?
				Добавлено: 12 авг 2010, 19:27
				 Naphtizin
				C переключением слоев вроде разобрался, сделал два радиобатона, всё переключается отлично.
Код: Выделить всё
<input type="radio" value="1" checked="checked" onchange="layerswitch1()">Карта<br />
<input type="radio" value="2" onchange="layerswitch2()">Снимок<br />
А вот как быть с оверлеями? Они ведь должны накладываться на активный слой, а не влючаться вместо него. Может для оверлеев нужна какаято другая функция?
 
			
					
				Re: Как сделать LayerSwitcher своими руками?
				Добавлено: 12 авг 2010, 19:38
				 dobeer
				wms.setVisibility(true);  //показать
wms.setVisibility(false); //скрыть
Если я правильно понял о чем вы...
			 
			
					
				Re: Как сделать LayerSwitcher своими руками?
				Добавлено: 12 авг 2010, 20:04
				 Naphtizin
				А как это применить относительно конкретного слоя?
			 
			
					
				Re: Как сделать LayerSwitcher своими руками?
				Добавлено: 12 авг 2010, 20:31
				 dobeer
				wms - имя вашего дополнительного слоя
...например:
<input type="radio" value="1" checked="checked" onchange="ghyb.setVisibility(false);">Отключить<br />
<input type="radio" value="2" checked="checked" onchange="ghyb.setVisibility(true);">Включить<br />