如何使用 Django-leaflet 获取对 Djano 管理页面中已加载的传单地图的引用

问题描述 投票:0回答:1

我正在尝试向 Django 管理页面中加载的传单地图添加标记,其中包含从 ajax 调用检索的数据。但是,我无法获取可在模板中用于覆盖 Django 管理模板的地图的引用。

如果我加载页面,打开控制台,然后运行下面的代码,它就可以工作。标记已添加到地图上。

控制台:

var map = window['leafletmapid_location-map'];
L.marker([40.3830621, -111.773658]).addTo(map);

但是,如果我在模板中包含完全相同的代码,它就不起作用,因为它没有获取对地图的引用,而且我不明白为什么。

模板:

{% extends "admin/change_form.html" %}
{% load i18n admin_urls %}

{% block content %}{{ block.super }}
<script>
    var map = window['leafletmapid_location-map'];
    L.marker([40.3830621, -111.773658]).addTo(map);
</script>
{% endblock %}

如果我用以下内容替换整个脚本标记,我会得到未定义的结果,我认为这是问题的原因。

模板:

<script>
    console.log(window['leafletmapid_location-map'])
</script>

但是,如果将模板更改为以下内容,我会得到窗口对象,并且它显示它具有可用的 leafletmapid_location-map 对象。

模板:

<script>
    console.log(window)
</script>
django leaflet django-admin django-leaflet
1个回答
0
投票

官方 django-leaflet 文档提供了如何操作的详细信息。 阅读文档

<script>
    window.addEventListener("map:init", function (e) {
        var detail = e.detail;
        ...
        L.marker([50.5, 30.5]).addTo(detail.map);
        ...
    }, false);
</script>
© www.soinside.com 2019 - 2024. All rights reserved.