如何在Leafletjs中使用base64编码的标记

时间:2013-11-28 04:00:36

标签: django base64 gis leaflet markers

我正在使用传单来渲染政府地图并通过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 %}

我正在尝试将标记的图标作为base64编码的PNG发送,以便为访问地图的每个用户的每个地图的每个图标保存到服务器的往返请求。我尝试以类似于谷歌地图支持的方式发送图像base64编码(Marker Using base64 encoded string)但没有成功,地图渲染中止“未捕获的SyntaxError:意外的令牌ILLEGAL”。

编辑:

一种可能的解决方案:扩展Leaflet的Icon类 https://github.com/cavis/leafpile/blob/master/src/LeafpileIcon.js#L28

1 个答案:

答案 0 :(得分:1)

问题是由我将图像转换为base64的方式引起的。

而不是

base64.b64encode(contents)

我正在使用:

contents.encode('base64')

插入新行字符('\ n')导致“Unexpected token ILLEGAL”Javascript错误。 Leaflet 0.7正确支持base64编码标记图标。