Страница 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 />