2016-06-29 14 views
0

Ich habe Probleme beim Aktualisieren einer angezeigten geoJSON auf einem Prospekt. Ich arbeite mit d3 und leaflet. Die callbackHandler erhält jedes Mal, wenn der Benutzer dies wünscht, eine neue geoJSON (name).Aktualisieren von geoJson innerhalb von CallbackHandler auf der Karte

Mein Code sieht wie folgt vor:

someCallbackHandler("name", function("newName") { 
    var newJson = JSON.parse(newName); 
    // then its basically this 
    https://bost.ocks.org/mike/leaflet/ 
    ... 
}); 

Die erste geoJson angezeigt wird. Wenn der Benutzer jedoch einen anderen anzeigen möchte, wird die Karte nicht aktualisiert. Was verursacht dieses Verhalten? Da die Displayfunktion innerhalb der callbackHandler verschachtelt ist, sollte sie jedes Mal aufgerufen werden, wenn sie eine neue geoJson sendet. Oder fehlt mir etwas?

bearbeiten

Sein hartes, ein vollständiges Beispiel für den Code zu schreiben, da es eine Menge Abhängigkeiten hat ... ich es verengt dieses wenig nach unten. Was ich bisher herausgefunden habe ist, dass, wenn die callbackHandler kickt in der ersten Zeit, console.log(newJson) gibt mir eine Object. Wenn die callbackHandler in der zweiten, dritten, vierten, ... Zeit tritt, bekomme ich das: {crs: {type: "name", properties: ... "FeatureCollection", features: Array}. Wenn ich die Werte in der Object/{crs: {type: .... überprüfe, sehe ich, dass sie anders sind. Aber die Karte von ihnen ändert sich nicht.

Das scheint nicht richtig ?!

Antwort

0

Ohne den Rest des Codes zu sehen, und nur diesen Extrakt untersuchen, würde ich sagen, auf jeden Fall das erste Problem der Anführungszeichen um Ihre newName Parameter in der Callback-Funktion ... Es soll

los zu lösen, ist immer aussehen wie someCallbackHandler("name", function(newName) {

+0

Sorry, das ist ein Tippfehler ... Natürlich ist es keine Zeichenfolge, sondern ein Variablenname. – Stophface

+1

Ok, kannst du irgendwo ein komplettes Beispiel posten? – snkashis

+0

Ich habe meine Fragen so gut wie möglich bearbeitet. – Stophface