我正在尝试向 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 文档提供了如何操作的详细信息。 阅读文档
<script>
window.addEventListener("map:init", function (e) {
var detail = e.detail;
...
L.marker([50.5, 30.5]).addTo(detail.map);
...
}, false);
</script>