Я получаю очки, используя 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);
Но это все еще дает мне пустой массив. Итак, есть ли способ получить мой массив без установки таймаута?