У меня проблема с отображением результатов SQL-запроса на карте Leaflet (JavaScript) в структуре Django.
Я пытаюсь (1) выполнить запрос к базе данных PostgreSQL, затем (2) использовать эти результаты для отображения географической информации на карте в формате geoJSON.
Это показывает, как я запрашиваю данные в моем файле views.py.
qrjsScript = "CREATE TEMP VIEW agJson AS SELECT ST_AsGeoJSON(geom) FROM buildings; SELECT json_agg(ST_AsGeoJSON(ST_Transform(geom,4326))) FROM buildings;"
print('qrjsScript was be created')
cur.execute(qrjsScript)
print('Executed qrjsSCript')
qrjs = json.loads(json.dumps(cur.fetchall()).replace("'",""))
print('Fethched qrjs')
context = {
"query_result10": query_result10,
"query_result25": query_result25,
"query_result50": query_result50,
"query_resultall": query_resultall,
"qrjs": qrjs,
}
return HttpResponse(template.render(context, request))
В моем HTML-документе указан следующий код:
<!-- MAP - https://leafletjs.com/examples/geojson/ -->
<div id="mapid" style="width: 100%; height: 500px; border: dotted;">
<script>
var mymap = L.map('mapid').setView([61.168, -149.8813], 10);
var q = [{"type":"MultiPolygon","coordinates":[[[[-149.72338652766,61.1241310732884],[-149.723306492926,61.1241347033877],[-149.723286765036,61.1241509286142],[-149.723242555995,61.1241529338634],[-149.723213286266,61.1241382068663],[-149.722979311586,61.1241488175764],[-149.72296258821,61.1240628206917],[-149.723128666374,61.1240552877427],[-149.723130999702,61.1240672832556],[-149.723194724409,61.1240643935417],[-149.72322540512,61.124047627999],[-149.72326448864,61.1240458554958],[-149.723294540424,61.124060479073],[-149.723372113455,61.1240569606234],[-149.72338652766,61.1241310732884]]]]},{"type":"MultiPolygon","coordinates":[[[[-149.89717999948,61.1513470000162],[-149.89693000048,61.1513489997907],[-149.89692799917,61.1512769997723],[-149.897177999458,61.1512750000028],[-149.89717999948,61.1513470000162]]]]}]
var n = {{ qrjs|safe }}
console.log(n);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: 'Map data © <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>',
maxZoom: 18,
id: 'mapbox.streets',
}).addTo(mymap);
L.geoJSON(q).addTo(mymap);
L.geoJSON(n).addTo(mymap);
</script>
</div>
Когда я открываю свой сайт, на моей карте должно быть много полигонов, но это не так.
Может кто-нибудь помочь мне понять, что я делаю не так?
Я также включил частичные результаты запроса ниже: