Листовка ставит координаты каждой точки в массиве - PullRequest
1 голос
/ 24 мая 2019

Я получаю очки, используя GeoJSON.AJAX, и я хочу сохранить координаты в массиве, чтобы потом передать его функции, которая строит маршруты между точками. Сейчас я использую этот код

<script>
    function our_layers(map){

    var coords = []; //array to store coordinates
    var points = new L.GeoJSON.AJAX("{% url 'incidences' %}",{

        onEachFeature: function (feature, layer) {
            layer.bindPopup(a lot of code here);

            x = feature.geometry.coordinates
            coords.push(x);//here I add coordinates to array
        }
    });
    points.addTo(map);

    //there is button "getcoords" I created to test some things
    document.getElementById("getcoords").addEventListener("click", logCoords);

    function logCoords() {
         console.log("Test " + coords);
     }

</script>
{% leaflet_map "gis" callback="window.our_layers" %}

Таким образом, он работает идеально, но мне нужно получить массив coords без нажатия кнопки, очевидно. Но если попытаться поставить concole.log(coords) после points.addTo(map), он вернет пустой массив. Я думаю, это потому, что нужно некоторое время для расчета (потому что, если я нажимаю кнопку сразу после обновления страницы, я тоже получаю пустой массив). Есть ли способ напечатать массив сразу после нажатия на координаты и без установки таймаута? Я тоже пробовал

        function drawPoints(p, callback) {
                    p.addTo(map);
                    callback()
                }
        function logCoords() {
                    console.log("Test " + coords);
                }

        drawPoints(points, logCoords);

Но это все еще дает мне пустой массив. Итак, есть ли способ получить мой массив без установки таймаута?

1 Ответ

0 голосов
/ 25 мая 2019

Решение

points.on('data:loaded', function () {
            points.addTo(map);
            logCoords();
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...