2016-05-03 4 views
0

Ich möchte durch Jquery einige Geojson-Punkte Daten (d. H. Einige Marker in einer Karte) aus einer Datenbank abrufen. DieMapbox, kannGeoJSON in jQuery-Callback nicht setzen

function remm(id){ 
$.ajax({ 
    type: "POST", 
    url:"geojson2.php", 
    data:{ 
     u_id:id[0], 
     t_id:id[2] 
    }, 
    success: function(geo,status){ 
     myLayer.setGeoJSON([geo]); 
     console.log(geo); 
    } 
    }); 
} 

Beim Testen der Datenpunkte aus geojson2.php abgerufen in GeoJSON Lint es sehr gut funktioniert. Beim Aufruf der Funktion myLayer.setGeoJSON() werden jedoch nur alle vorhandenen Markierungen entfernt. myLayer befindet sich am Anfang der JavaScript-Datei instanziiert und wie folgt aussieht:

L.mapbox.accessToken = 'key'; 
    var map = L.mapbox.map('map', 'mapbox.streets').setView([40, 0], 1); 
    var myLayer = L.mapbox.featureLayer().addTo(map); 

Da es alle Markierungen aus der Karte wegnimmt es nicht zu sein scheinen, dass myLayer an die Callback-Funktion in der Ajax nicht verfügbar ist. Was könnte das Problem sein und was vermisse ich?

Antwort

0

Die Methode .setGeoJSON ersetzt GeoJSON - es setzt GeoJSON, keine einzelnen Funktionen hinzufügen. Wenn Sie neue Funktionen hinzufügen möchten, anstatt den vorhandenen Inhalt zu ersetzen, sollten Sie eine neue Ebene für die Funktionen erstellen, die mit jQuery geladen werden, und die Methode L.mapbox.featureLayer verwenden und zur Karte hinzufügen.

+0

Ich habe das versucht, aber das funktioniert auch nicht. Sind die instanziierten "map" - und "myLayer" -Objekte global, so dass alle Funktionen unabhängig davon, wo Sie sie im Skript haben (normale js-Funktionen, jQuery-Rückrufe usw.)? @ tmcw – JMats

+0

> Ist das instanziierte 'map' und 'myLayer' Objekte global, so dass alle Funktionen, egal wo Sie es im Skript haben Das hängt völlig davon ab, wo Sie sie instanziieren. Wenn Sie sie mit 'var' erstellen und sie außerhalb einer Funktion oder eines Abschlusses instanziieren, dann sind sie global. – tmcw

+0

Sie werden nur direkt innerhalb des Skripts mit var instanziiert, also denke ich, dass sie in diesem Fall global werden. Vielen Dank! @ tmcw – JMats