Как сделать LayerSwitcher своими руками?

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Naphtizin
Интересующийся
Сообщения: 23
Зарегистрирован: 04 окт 2009, 19:22
Репутация: 0

Как сделать LayerSwitcher своими руками?

Сообщение Naphtizin » 12 авг 2010, 11:20

Здравствуйте. У меня появилась необходимость в OpenLayers вынести LayerSwitcher за пределы карты. То есть убрать его с карты и создать функционал переключения слоев вручную. Вот здесь читал о подобном, но как реализовать так и не понял. Подскажите как сделать задуманное.

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Как сделать LayerSwitcher своими руками?

Сообщение Mavka » 12 авг 2010, 11:37

лангольеры под окном жрали время ом-ном-ном

Naphtizin
Интересующийся
Сообщения: 23
Зарегистрирован: 04 окт 2009, 19:22
Репутация: 0

Re: Как сделать LayerSwitcher своими руками?

Сообщение Naphtizin » 12 авг 2010, 11:53

Этот вариант как я понял предполагает просто вынос стандартного LayerSwitcher за пределы карты. А можно ли сделать свой LayerSwitcher, то есть сделать свои радиобатоны и чекбоксы?

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Как сделать LayerSwitcher своими руками?

Сообщение Mavka » 12 авг 2010, 12:43

Готовый LayerSwitcher не подходит, вручную переключать слои тоже. Непонимаю...
лангольеры под окном жрали время ом-ном-ном

Naphtizin
Интересующийся
Сообщения: 23
Зарегистрирован: 04 окт 2009, 19:22
Репутация: 0

Re: Как сделать LayerSwitcher своими руками?

Сообщение Naphtizin » 12 авг 2010, 14:27

Вот именно, что надо вручную. Как я понял нужна функция setBaseLayer(). Пробую выполнить что-то типа такого:

Код: Выделить всё

function layerswitch() {
                        map.setBaseLayer(demolayer2)
};
не выходит.

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Как сделать LayerSwitcher своими руками?

Сообщение Mavka » 12 авг 2010, 14:37

И чаво говорит? Не хочу не буду?
лангольеры под окном жрали время ом-ном-ном

Naphtizin
Интересующийся
Сообщения: 23
Зарегистрирован: 04 окт 2009, 19:22
Репутация: 0

Re: Как сделать LayerSwitcher своими руками?

Сообщение Naphtizin » 12 авг 2010, 15:05

Молчит.

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Как сделать LayerSwitcher своими руками?

Сообщение Mavka » 12 авг 2010, 15:25

И в firebugs? У меня очень хорошо переключает
лангольеры под окном жрали время ом-ном-ном

Naphtizin
Интересующийся
Сообщения: 23
Зарегистрирован: 04 окт 2009, 19:22
Репутация: 0

Re: Как сделать LayerSwitcher своими руками?

Сообщение Naphtizin » 12 авг 2010, 16:42

Не, не переключает.Привожу код:

Код: Выделить всё

      <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()">
Если не трудно ткните пальцем где накосячил.

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Как сделать LayerSwitcher своими руками?

Сообщение Mavka » 12 авг 2010, 16:48

Сделать ghyb глобальной

Код: Выделить всё

var map, ghyb; 
а здесь без var:

Код: Выделить всё

ghyb = new OpenLayers.Layer.Google( 
лангольеры под окном жрали время ом-ном-ном

Naphtizin
Интересующийся
Сообщения: 23
Зарегистрирован: 04 окт 2009, 19:22
Репутация: 0

Re: Как сделать LayerSwitcher своими руками?

Сообщение Naphtizin » 12 авг 2010, 16:55

Спасибо большое, вот уж не думал, что проблема в этом может быть. Вот что значит нехватка знаний javascript'а.

Naphtizin
Интересующийся
Сообщения: 23
Зарегистрирован: 04 окт 2009, 19:22
Репутация: 0

Re: Как сделать LayerSwitcher своими руками?

Сообщение Naphtizin » 12 авг 2010, 19:27

C переключением слоев вроде разобрался, сделал два радиобатона, всё переключается отлично.

Код: Выделить всё

<input type="radio" value="1" checked="checked" onchange="layerswitch1()">Карта<br />
<input type="radio" value="2" onchange="layerswitch2()">Снимок<br />
А вот как быть с оверлеями? Они ведь должны накладываться на активный слой, а не влючаться вместо него. Может для оверлеев нужна какаято другая функция?

Аватара пользователя
dobeer
Активный участник
Сообщения: 199
Зарегистрирован: 25 дек 2009, 21:54
Репутация: 1
Откуда: Чита
Контактная информация:

Re: Как сделать LayerSwitcher своими руками?

Сообщение dobeer » 12 авг 2010, 19:38

wms.setVisibility(true); //показать
wms.setVisibility(false); //скрыть
Если я правильно понял о чем вы...

Naphtizin
Интересующийся
Сообщения: 23
Зарегистрирован: 04 окт 2009, 19:22
Репутация: 0

Re: Как сделать LayerSwitcher своими руками?

Сообщение Naphtizin » 12 авг 2010, 20:04

А как это применить относительно конкретного слоя?

Аватара пользователя
dobeer
Активный участник
Сообщения: 199
Зарегистрирован: 25 дек 2009, 21:54
Репутация: 1
Откуда: Чита
Контактная информация:

Re: Как сделать LayerSwitcher своими руками?

Сообщение dobeer » 12 авг 2010, 20:31

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 />

Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: Ahrefs [Bot] и 2 гостя