Клуб API Карт

Включение/отключения слоя api 2.1

Пост в архиве.

Добрый вечер.

 

накладываю слой на свою карту с использованием кнопки с таким кодом:

 

        document.getElementById('add').onclick = function () {
        myMap.layers.add(new ymaps.Layer(
            'http://tile.openstreetmap.org/%z/%x/%y.png', {
            projection: ymaps.projection.sphericalMercator
        }));
    };

сама кнопка:

 

<input type="button" value="add" id="add" />

как убрать слой по нажатию другой кнопки или с применением к примеру checkbox? Флаг установлен - слой есть, флага нету - слоя нету.

 

4 комментария

Через чекбокс:

   var OSMLayer = new ymaps.Layer(            'http://tile.openstreetmap.org/%z/%x/%y.png', {         projection: ymaps.projection.sphericalMercator    });    document.getElementById('osm').onclick = function () {        myMap.layers[this.checked ? 'add' : 'remove' ](OSMLayer);    };    

 

PS: прежде чем это делать я бы почитал в пользовательском соглашении OSM, а можно ли показывать их тайлы через чужие АПИ. (В случае других АПИ 100% – нельзя). Минимум надо показывать их копирайт на слое.

Вообще правильный путь – переключаться между АПИ, а не слои менять.

да я ради примера указал openstreetmap, так у меня свой слой с покрытием полупрозрачным. Спасибо. Попробую.

Владислав Турман
27 января 2016, 23:48

 

                var osmLayer = function () {

                    var layer = new ymaps.Layer('http://otile%d.mqcdn.com/tiles/1.0.0/osm/%z/%x/%y.png', {

                        projection: ymaps.projection.sphericalMercator

                    });

                    layer.getCopyrights = function () {

                        return ymaps.vow.resolve('© OpenStreetMap contributors, CC-BY-SA | Tiles Courtesy of http://www.mapquest.com/" target="_blank">MapQuest http://developer.mapquest.com/content/osm/mq_logo.png" /> | ');

                    };

                    return layer;

                }

 

Вроде, так можно.

А как сам чекбокс добавить, а то не пашет без него)) не в хтмл же его пихать.