使用Javascript解析传单地图中的Django数据



你好,我想知道是否有人可以帮助我解决这个问题。我试图从我的Django数据库中添加地址到一个Javascript,它将地址转换为长/晚坐标,从而允许我使用这些新坐标作为传单地图上的标记。

目前我已经加载了地图。

<body>
<div id="map"></div>
<script>
var map = L.map('map').setView([37.116386, -98.299591], 5);
L.tileLayer('https://api.maptiler.com/maps/basic-v2/256/{z}/{x}/{y}.png?key=APIKEY', {
attributions: '<a href="https://www.maptiler.com/copyright/" target="_blank">&copy; MapTiler</a> <a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap contributors</a>'
}).addTo(map)
var marker = L.marker([37.116386, -98.299591]).addTo(map);
</script>
</body>

基本上,我想用我从Django中提供的地址中渲染的值来替换标记值。

{% for address in addresses %}
<a>{{address.addresses}}</a>
{% endfor %}

如果我要过滤与地址关联的业务,我希望它呈现该特定业务地址的标记。如果有人能帮忙,我将不胜感激。

将值存储在一些隐藏的HTML元素中,并在使用Javascript呈现时使用它们。你可以使用

<input type="hidden" id="long" value="your_value_here" />

<div style="display: none;" id="long" >your_value_here</div>

将Django数据放入javascript的最好方法是使用json_script模板标签:

https://docs.djangoproject.com/en/4.0/ref/templates/builtins/json-script

将地址转换为长/晚坐标

我认为你所描述的是一个地理编码过程。有几种方法和服务可以对不绑定Django或传单的地址进行地理编码。有些是付费的,有些可能是有限制的免费的(谷歌也有一个)。虽然有一些传单地理编码插件,我不确定他们可以做你想要的。你应该找到一种方法来填充插件的搜索栏与您的地址数据,每次并按回车键(通过Javascript?),我不熟悉。

在我的应用程序中,如果我有一个数据库,我需要对地址进行地理编码并获取坐标,那么我在创建应用程序之前将其作为一个单独的工作,只是为了在我的数据库中使用坐标创建我的新列。

数据库使用postgis扩展存储在postgres上,django应用使用geoddjango创建。

所有这些都允许你在django应用中使用地理空间数据。然后,通常通过geojson序列化器或API端点,可以很容易地从你的Model到传单中获取任何你想要的东西。

这也可以通过其他方式完成,而不使用数据库和模型或geodjango,例如通过python folium库从地理编码的csv文件(您也事先制作)。您在后端创建映射,并通过iframes将其传递到模板中。

最新更新