Как вставить логотип в формате SVG в код конструктора карт 2ГИС с использованием HTML?

Как интегрировать свой логотип в формате SVG в код, созданный в конструкторе карт 2gis, так, чтобы он оставался закрепленным на определенной точке при изменении масштаба и перетаскивании карты?
  • 8 сентября 2024 г. 23:13
Ответы на вопрос 1
Чтобы вставить логотип в формате SVG в код конструктора карт 2ГИС и сделать его закрепленным на определенной точке карты при изменении масштаба и перетаскивании, вам нужно использовать несколько элементов HTML и JavaScript. Поскольку 2ГИС предоставляет API для работы с картами, вам необходимо создать элемент для логотипа и обработать его привязку к нужной координате.

Вот шаги и пример реализации:

1. **Загрузите логотип в формате SVG** на ваш сервер или используйте ссылку, если он доступен в интернете.

2. **Создайте HTML-страницу, куда вы интегрируете код 2ГИС**. В вашем HTML-коде добавьте DIV для вывода карты и используйте API для интеграции логотипа.

3. **Используйте JavaScript для отображения логотипа на карте**. Вам нужно будет конвертировать координаты для привязки логотипа и использовать возможности API для добавления кнопки на карту.

Пример кода:

```html
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Карта 2ГИС с логотипом</title>
    <style>
        #map {
            width: 100%;
            height: 500px;
        }
        .custom-logo {
            position: absolute;
            width: 100px; /* Укажите желаемую ширину логотипа */
            pointer-events: none; /* Чтобы клики проходили через логотип */
        }
    </style>
</head>
<body>
    <div id="map"></div>
    <img src="path_to_your_logo.svg" class="custom-logo" id="logo" alt="Логотип" />

    <script src="https://api.2gis.ru/v2.0/loader.js?pkg=full"></script>
    <script>
        // Инициализация карты
        const map = DG.map('map', {
            center: [55.7558, 37.6173], // Координаты центра карты (Москва)
            zoom: 12
        });

        // Добавляем слой
        DG.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);

        // Указываем координаты для логотипа
        const logoCoordinates = [55.7558, 37.6173]; // Здесь укажите свои координаты

        // Функция для конвертации координат в пиксели
        function setLogoPosition() {
            var point = map.latLngToContainerPoint(logoCoordinates);
            var logo = document.getElementById('logo');
            logo.style.left = point.x - (logo.offsetWidth / 2) + 'px';
            logo.style.top = point.y - (logo.offsetHeight / 2) + 'px';
        }

        // Устанавливаем положение логотипа при инициализации карты
        setLogoPosition();

        // Обновляем позицию логотипа при изменении масштаба или перемещении карты
        map.on('move', setLogoPosition);
        map.on('zoom', setLogoPosition);
    </script>
</body>
</html>
```

### Пояснения:
- **HTML**: Создается контейнер для карты и элемент для логотипа.
- **CSS**: Задается стиль для логотипа, чтобы он не мешал нажатиям в игре с картой.
- **JavaScript**: Используются функции API 2ГИС для создания карты, установки логотипа по координатам, а также его переопределения при изменении уровня масштабирования и перемещении карты.

Обязательно замените `path_to_your_logo.svg` на путь к вашему логотипу.
Похожие вопросы