Почему не применяется тёмный стиль? <br/> <br/> Я добавил следующую строку в раздел head, но это не изменило стиль: <br/> <pre><code class="php"><script src="https://api-maps.yandex.ru/2.1/?apikey={$system['yandex_geolocation_key']}&theme=dark&lang=ru_RU"></script></code></pre> <br/> <br/> Также у меня есть скрипт: <br/> <pre><code class="javascript"><script>
{literal}
document.addEventListener("DOMContentLoaded", function () {
document.querySelectorAll('.yandex-map-container').forEach(async function (mapContainer) {
let location = mapContainer.getAttribute('data-location');
if (location) {
// Используем Yandex Geocoder API для получения координат
let geocodeUrl = `https://geocode-maps.yandex.ru/1.x/?apikey={/literal}{$system['yandex_geolocation_key']}{literal}&geocode=${encodeURIComponent(location)}&format=json`;
try {
let response = await fetch(geocodeUrl);
let data = await response.json();
// Извлекаем координаты
if (data.response.GeoObjectCollection.featureMember.length > 0) {
let pos = data.response.GeoObjectCollection.featureMember[0].GeoObject.Point.pos;
let [lon, lat] = pos.split(" "); // Yandex возвращает "долгота широта"
// Инициализируем Yandex карту
ymaps.ready(function () {
let myMap = new ymaps.Map(mapContainer, {
center: [lat, lon], // Используем извлечённые координаты
zoom: 14,
controls: []
// Убираем стандартный набор кнопок
}, {
suppressMapOpenBlock: true
});
// Добавляем метку
myMap.geoObjects.add(new ymaps.Placemark([lat, lon], {
balloonContent: location
}));
});
Чтобы изменить стиль карты в API Яндекс.Карт, необходимо отметить несколько моментов:
1. **Использование параметра `theme`**: Как вы уже указали, вы пытаетесь добавить параметр `theme=dark` в строку подключения к API. Однако, для изменения темы в Яндекс.Картах необходимо использовать также соответствующий вариант параметров конфигурации карты.
2. **Параметры конфигурации карты**: При создании экземпляра карты вы можете передавать разные конфигурации. В вашем случае не указаны параметры стиля, соответствующие тёмной теме. Для этого вы можете использовать метод `setType` для установки стиля карты.
Пример, как можно изменить стиль карты на тёмный:
```javascript
ymaps.ready(function () {
let myMap = new ymaps.Map(mapContainer, {
center: [lat, lon], // Используем извлечённые координаты
zoom: 14,
controls: []
}, {
suppressMapOpenBlock: true
});
// Устанавливаем тёмный стиль карты
myMap.setType('yandex#dark');
// Добавляем метку
myMap.geoObjects.add(new ymaps.Placemark([lat, lon], {
balloonContent: location
}));
});
```
3. **Проверка версии API**: Убедитесь, что вы используете актуальную версию API Яндекс.Карт, так как изменения и новые функции могут быть доступны в последних версиях.
4. **Проверка ключа API**: Убедитесь, что ваш API-ключ действителен и имеет права на использование всех нужных возможностей API.
Если после внесения этих изменений стиль всё равно не изменяется, проверьте консоль разработчика в браузере на наличие ошибок, связанных с загрузкой карты или её стилей. Также убедитесь, что на странице нет других скриптов или стилей, которые могут перекрывать настройки карты.