Ich versuche, die Google Maps v3 API auf meiner Website zu implementieren. Ich verwende derzeit ein JS-Skript, um die Karte zu laden. Derzeit sind alle Werte für Zentrum, Zoom und einige andere Dinge in meinem Skript fest codiert. Ich möchte diese Werte aus einer PHP-Datei in JSON-Form ziehen können. In meinem aktuellen Skriptdatei, nenne ich meine Funktionen in dieser Reihenfolge:Umstrukturierung meines Codes zur Vermeidung von asynchronen .getJSON AJAX Anruf
function initJSON(){
var answerjson = undefined;
var requestAnswer = $.getJSON('URL');
requestAnswer.done(function (data) {
answerjson = data;
});
}
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
zoom: //Would like to get data from JSON,
center: //Would like to get data from JSON,
mapTypeId: 'terrain'
});
//Code here about creating a shape outliner, not important
variableDefinedAbove.addListener('click', showArrays);
}
function showArrays(event) {
var vertices = this.getPath();
var contentString = //Would like to get data from JSON ;
infoWindow.setContent(contentString);
infoWindow.setPosition(event.latLng);
infoWindow.open(map);
}
Als ich dieses Skript aufrufen, Javascript, um das initMap() und showArrays() -Funktionen vor initJSON vervollständigt die Daten ziehen können. Ich verstehe, wie man Daten aus dem abgeschlossenen initJSON() in meine anderen Funktionen einfügt, aber "answerjson" ist undefiniert, wenn diese Funktionen ausgeführt werden, was sie nutzlos macht. Gibt es eine Möglichkeit, mein Programm so umzustrukturieren, dass initJSON() abgeschlossen werden muss, bevor irgendwelche anderen Funktionen ausgeführt werden? Ich weiß, dass ich das wahrscheinlich mit Async und Promises machen könnte, aber ich habe keine Erfahrung mit ihnen, und ich würde sie lieber verwenden, wenn es eine einfachere Lösung gibt.
Ist gibt es eine Möglichkeit, den Wert von Daten initMap() zu drucken, um zu überprüfen, ob es richtig funktioniert? Jetzt setze ich var abc = data; und console.log (abc); am Anfang von initMap() und es gibt immer noch undefined zurück. Mache ich es falsch? – taurus
@ user1234231 - Nein, das sollte funktionieren. Können Sie überprüfen, ob die Daten, die von Ihrem Server zurückkommen, die tatsächlichen Daten sind, die Sie erwarten? Pop öffnen Sie Ihre Konsole, gehen Sie auf die Registerkarte "Netzwerk" und überprüfen Sie Ihren AJAX-Aufruf (insbesondere die Antwort) – tymeJV
Ok, konnte ich es auf die erste initJSON() Funktion wird nie überhaupt angerufen werden. Vielen Dank. – taurus