使用for循环创建django-leaflet的多个实例可以通过以下步骤实现:
from django.shortcuts import render
from django.contrib.gis.geos import Point
from leaflet.forms.widgets import LeafletWidget
def map_view(request):
map_data = [
{'name': 'Location 1', 'lat': 40.7128, 'lng': -74.0060},
{'name': 'Location 2', 'lat': 34.0522, 'lng': -118.2437},
{'name': 'Location 3', 'lat': 51.5074, 'lng': -0.1278}
]
return render(request, 'map.html', {'map_data': map_data})
{% load leaflet_tags %}
{% for data in map_data %}
<div id="map_{{ forloop.counter }}" style="height: 400px;"></div>
<script>
var map_{{ forloop.counter }} = L.map('map_{{ forloop.counter }}').setView([{{ data.lat }}, {{ data.lng }}], 10);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map_{{ forloop.counter }});
L.marker([{{ data.lat }}, {{ data.lng }}]).addTo(map_{{ forloop.counter }}).bindPopup('{{ data.name }}');
</script>
{% endfor %}
在上述代码中,我们通过for循环遍历地图数据列表,为每个地图数据创建一个唯一的地图实例。在模板中,我们使用map_{{ forloop.counter }}
作为每个地图实例的唯一标识,并设置相应的高度。然后,我们使用Leaflet库创建地图实例,并将其绑定到对应的div
元素上。最后,我们添加一个标记点,并设置弹出窗口显示地点名称。
这样,使用for循环创建django-leaflet的多个实例就完成了。每个实例都会显示一个地图,并在地图上标记对应的地点。
领取专属 10元无门槛券
手把手带您无忧上云