Клуб API Карт

Как изменять копирайт при смене слоя?

SerenaN
5 марта 2015, 14:21

Я добавил в список слоев OSM. В примере на вашем сайте показано как, добавить копирайт на карту, но мне надо включать и выключать его при выборе пользователем слоя OSM. Ткните носом, пожалуйста.

6 комментариев
Подписаться на комментарии к посту

У слоя есть метод getCopyrights

Я имею в виду вот что:

https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Layer-docpage/

Там такой фрагмент: 

Пример:

// Добавим на карту слой OSM map.layers.add(new ymaps.Layer( 'http://tile.openstreetmap.org/%z/%x/%y.png', { projection: ymaps.projection.sphericalMercator })); map.copyrights.add('© OpenStreetMap contributors, CC-BY-SA');

Я себе такое сделал. У меня повилась надпись в углу "OpenStreetMap contributors". Но она не исчезает когда я переключаюсь на карту яндекса. 
Я же написал - перекройте у слоя этот метод своей реализацией. И будет копирайт только для слоя

var osmLayer = function () {

var layer = new ymaps.Layer('http://tile.openstreetmap.org/%z/%x/%y.png', {

        projection: ymaps.projection.sphericalMercator

});

layer.getCopyrights = function(coords, zoom) {

return  (...)    // Здесь я должен создать объект промис, который будет подтверждён и передаст в качестве результата массив строк ['OSM']

};

    return layer;

};

ymaps.layer.storage.add('osm#aerial', osmLayer);

var osmType = new ymaps.MapType('OSM', ['osm#aerial']);

ymaps.mapType.storage.add('osm#map', osmType);

Я еще не постиг суть промисов. Как мне создать промис, который будет подтверждён и передаст в качестве результата массив строк ['OSM']? Помогите, пожалуйста.
return ymaps.vow.resolve([
'© OpenStreetMap contributors, CC-BY-SA'
]);

Спасибо. Работатет.