Добавить несколько маркеров с добавлением адресов в Mapbox

Я знакомлюсь с тем, как работает mapbox, я беру адреса из базы данных, которую я помещаю в запрос mapboxClient.geocoding .forwardGeocode, но он принимает только последний адрес, который есть в моей базе данных. Мне нужно добавить закладки для каждого адреса, который у меня есть. Я был бы признателен, если бы вы могли мне помочь или заверить меня. У меня такой код:

Views.py

def direcciones_view(request):
    direcciones = INSTITUCION.objects.filter(ins_estado='1').order_by('ins_comuna')
    template_name = "Map.html"
    context = {'direcciones': direcciones}
    return render(request, template_name, context)

Map.html

<html>
<head>
<meta charset="utf-8" />
<title>Add a marker using a place name</title>
<meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no" />
<script src="https://api.mapbox.com/mapbox-gl-js/v2.0.0/mapbox-gl.js"></script>
<link href="https://api.mapbox.com/mapbox-gl-js/v2.0.0/mapbox-gl.css" rel="stylesheet" />
<style>
    body { margin: 0; padding: 0; }
    #map { position: absolute; top: 0; bottom: 0; width: 100%; }
</style>
</head>
<body>
<div id="map"></div>
<script src="https://unpkg.com/[email protected]/dist/es6-promise.auto.min.js"></script>
<script src="https://unpkg.com/@mapbox/mapbox-sdk/umd/mapbox-sdk.min.js"></script>
{% block content %}
{% if direcciones %}
{% for direccion in direcciones %}
<script>
    mapboxgl.accessToken = 'pk.eyJ1IjoidmVuZ2Vyc3RlaW4iLCJhIjoiY2toM3A1anR3MDlqeDJzcGZ3bWpvam80YyJ9._vy6lsgCwzYfgkEXnBQ8fw';
var mapboxClient = mapboxSdk({ accessToken: mapboxgl.accessToken });
mapboxClient.geocoding
.forwardGeocode({
query: "{{direccion.ins_comuna}},{{direccion.ins_direccion}},Chile",
autocomplete: false,
limit: 1
})
.send()
.then(function (response) {
if (
response &&
response.body &&
response.body.features &&
response.body.features.length
) {
var feature = response.body.features[0];

var map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/streets-v11',
center: feature.center,
zoom: 10
});

new mapboxgl.Marker().setLngLat(feature.center).addTo(map);

}
});
</script>
{% endfor %}
{% endif %}
{% endblock %}
</body>
</html>

person hernan diaz fuentes    schedule 29.12.2020    source источник


Ответы (1)


Система шаблонов выглядит как Django или Ninja2.

Если вы используете такой шаблон for;

{% for direccion in direcciones %}
<script>
...
</script>
{% endfor %}

Это будет расширено ниже;

<script>
...
</script>
<script>
...
</script>
<script>
...
</script>

Поэтому результаты перезаписываются последующими сценариями, и вы видите только последний результат.

person Yoshikage Ochi    schedule 08.01.2021