Как я могу использовать информацию базы данных для отображения в Leaflet в структуре Django? - PullRequest
0 голосов
/ 16 ноября 2018

У меня проблема с отображением результатов 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 &copy; <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>

Когда я открываю свой сайт, на моей карте должно быть много полигонов, но это не так. enter image description here

Может кто-нибудь помочь мне понять, что я делаю не так?

Я также включил частичные результаты запроса ниже: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...