Как использовать маркеры в кодировке base64 с Leafletjs

Я использую листовку для рендеринга правительственных карт и добавляю пользовательские маркеры через серверную часть Python. Эти маркеры созданы с использованием

        var markers = {
            {% for marker in markers.all %}
                '{{ marker.slug }}': L.icon({
                    iconUrl: '{{ marker.icon.get_absolute_url }}',
                    {% if marker.shadow %}
                        shadowUrl: '{{ marker.shadow.get_absolute_url }}',
                    {% endif %}
                }),
            {% endfor %}

Я пытаюсь отправить значки для маркеров в виде PNG-файлов с кодировкой base64, чтобы сохранить двусторонний запрос на сервер для каждого значка каждой карты каждого пользователя, обращающегося к картам. Я пробовал отправлять изображения в кодировке base64 так же, как и в Google Maps (Использование маркера строка в кодировке base64) безуспешно, отображение карты прерывается с ошибкой «Uncaught SyntaxError: Unexpected token ILLEGAL».

РЕДАКТИРОВАТЬ:

Одно из возможных решений: расширить класс иконок Leaflet https://github.com/cavis/leafpile/blob/master/src/LeafpileIcon.js#L28.


person Roberto Rosario    schedule 28.11.2013    source источник


Ответы (1)


Проблемы были вызваны тем, как я конвертировал изображения в base64.

Вместо того

base64.b64encode(contents)

Я использовал:

contents.encode('base64')

который вставляет символы новой строки ('\ n'), вызывая ошибку Javascript "Unexpected token ILLEGAL". Leaflet 0.7 правильно поддерживает значки маркеров в кодировке base64.

person Roberto Rosario    schedule 28.11.2013