Как переключить Яндекс Карты в ночной режим?
В текущей версии JavaScript API Яндекс.Карт нет возможности переключения карты на ночной режим. Есть ли какие-либо примеры нестандартных способов реализации подобного функционала?
UPD Благодаря помощи участников форума получилось реализовать переключение ночного / дневного режимов:
ymaps.ready(function(){
var myMap = new ymaps.Map('map', {
center: [37.61691485505143, 55.7517318022522],
zoom: 10
});
var button = new ymaps.control.Button({
data: {
content: 'Ночной режим'
},
options: {
selectOnClick: true,
maxWidth: [90, 120, 200]
}
});
button.events.add('select', function(){
setMapLayer(myMap, 'dark');
}).add('deselect', function(){
setMapLayer(myMap, 'light');
});
myMap.controls.add(button, {
float: 'left'
});
});
function setMapLayer(map, map_type){
const MAP = 'custom#' + map_type;
ymaps.layer.storage.add(MAP, function mapLayer() {
return new ymaps.Layer('https://core-renderer-tiles.maps.yandex.net/tiles?l=map' + ((map_type == 'dark') ? ('&theme=dark') : ('')) + '&%c&%l');
});
ymaps.mapType.storage.add(MAP, new ymaps.MapType(map_type, [MAP]));
map.setType(MAP);
}
<script type="text/javascript" src="https://api-maps.yandex.ru/2.1/?lang=ru_RU"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="map"></div>
Источник: Stack Overflow на русском