Προς το περιεχόμενο

Leaflet - Javascript Map API


Προτεινόμενες αναρτήσεις

Δημοσ.

Θελω να δημιουργήσω polygons, αλλα τις συντεταγμένες θέλω να τις περνάω δυναμικα απο array. ο κωδικας μου ειναι αυτος.

for(var i = 0; i < coords.length; i++) {
        if(coords.id == 2) {
            var polygon = L.polygon([
            [coords.point_y, coords.point_x]
            ],{color:"red", fillColor:"red"}).addTo(mymap);
            
        }
    }

και παιρνω ως αποτελεσμα την εικονα παρακατω.σε καθε λουπ περναει και ενα σημειο.ομως εγω θελω να μου βγαζει κανονικα το polygon

Untitled.jpg

Δημοσ.

το θεμα είναι οτι για καποιο λογο δεν μου δεχεται το array.το εχω κανει και parseFloat και παλυ το ιδιο.

for(var i = 0; i < coords.length; i++) {
        if(coords.id == 2) {
            temp_pol = new Array();
            temp_b= new Array();
            x=x+1;
        }
    }

for(var i = 0; i < coords.length; i++) {
        if(coords.id == 2) {
            temp_pol.push(parseFloat(coords.point_y),(parseFloat(coords.point_x)));
            
        }
    }
    let polygon = L.polygon(temp_pol,{color:"red", fillColor:"red"}).addTo(mymap);

 

 

Δημοσ. (επεξεργασμένο)

Τι error σου βγάζει;
Μια χαρά φαίνεται να παίζει εδώ, για δες μήπως μπορείς να καταλάβεις τι κάνεις λάθος.

edit:
Βάζε τον κώδικα σε code tags για να διαβάζεται πιο εύκολα. Τώρα που ξαναδιαβάζω τι έγραψες, έχεις λάθος στις for loops.
Δεν καταλαβαίνω γενικά τι γράφεις, πχ τι είναι εκείνο το if, γιατί κάνεις 2 loops κλπ

for (let i = 0; i < coords.length; i++) {
    // current item is coords[i] not just coords
    // so you should write coords[i].point_x instead
    // of coords.point_x
}

 

Επεξ/σία από vadou
Δημοσ.

Τελικά λύθηκε το πρόβλημα.Το λάθος ήταν οτι έφτιαχνα array of arrays(στο πρωτο loop) με αποτέλεσμα το L.polygon να μην μπορει να το διαβάσει σωστα.Έπρεπε να δέχεται κανονικό array οπότε.

var temp_c=[];
	for(var i = 0; i < coords.length; i++) {
		if(coords[i].id == 2) {
				temp_c.push([parseFloat(coords[i].point_y),parseFloat(coords[i].point_x)]);
	
		}
	}
	console.log(temp_c);

	let polygon = L.polygon(temp_c,{color:"red", fillColor:"red"}).addTo(mymap);

το παραπάνω τρέχει όπως πρέπει.

Ευχαριστώ πολύ για την βοήθεια!

Δημοσ.
31 λεπτά πριν, Pits32 είπε

Τελικά λύθηκε το πρόβλημα.Το λάθος ήταν οτι έφτιαχνα array of arrays(στο πρωτο loop) με αποτέλεσμα το L.polygon να μην μπορει να το διαβάσει σωστα.Έπρεπε να δέχεται κανονικό array οπότε.


var temp_c=[];
	for(var i = 0; i < coords.length; i++) {
		if(coords[i].id == 2) {
				temp_c.push([parseFloat(coords[i].point_y),parseFloat(coords[i].point_x)]);
	
		}
	}
	console.log(temp_c);

	let polygon = L.polygon(temp_c,{color:"red", fillColor:"red"}).addTo(mymap);

το παραπάνω τρέχει όπως πρέπει.

Ευχαριστώ πολύ για την βοήθεια!

Απο οτι καταλαβαινω, δεν χρησιμοποιεις debugger, θα το ειχες λυσει πολυ πιο γρηγορα (και μονος σου) το προβλημα, θα το εβρισκες με τη μια.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...