我使用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);
但是它仍然给我空数组。因此,有没有办法在不设置超时的情况下获取我的阵列?
答案 0 :(得分:0)
解决方案是
points.on('data:loaded', function () {
points.addTo(map);
logCoords();
});