La mise à jour du Dépliant de Marqueur de Position Toutes les x Secondes avec JSON
J'ai un marqueur sur ma carte représentant l'emplacement actuel de la Station Spatiale Internationale (tiré de http://open-notify-api.herokuapp.com/iss-now.json?callback=?). Je suis aussi en train d'essayer de l'obtenir pour déplacer toutes les 1 seconde à suivre ainsi que de la station en orbite.
C'est le code que j'ai maintenant:
$.getJSON('http://open-notify-api.herokuapp.com/iss-now.json?callback=?', function(data) {
var latitude = data["data"]["iss_position"]["latitude"];
var longitude = data["data"]["iss_position"]["longitude"];
var iss = L.marker([latitude,longitude]).bindPopup("I am the ISS").addTo(map);
$(function() {
setInterval(function() {
iss.setLatLng([latitude,longitude]).update();
},1000);
});
});
Voici le tout dans un jsFiddle: http://jsfiddle.net/zmkqu/
Il semble placer le curseur dans la position correcte sur la charge, mais ne met pas à jour chaque seconde comme elle devrait l'être. Des conseils sur ce que je fais mal?
Merci!
OriginalL'auteur Febrium | 2013-01-22
Vous devez vous connecter pour publier un commentaire.
Vous devez placer l'ensemble de l'appel Ajax à l'intérieur de la
setInterval
de rappel. Droit maintenant, vous êtes réglage de la marque à la même position très, deuxièmement, parce qu'data
ne change pas. Vous devez faire un nouvel appel à chaque seconde:DÉMO
Remarque: Il est préférable d'utiliser
setTimeout
avec des appels Ajax, car vous ne savez pas comment de temps il faut pour obtenir la réponse.Vous êtes les bienvenus 🙂 N'oubliez pas d'indiquer la réponse acceptée (dès que vous le pouvez) en cliquant sur la case à côté d'elle. Il marque la question répondu (et vous donne les points de réputation). Vous devriez faire de votre ancien des questions trop si ils ont un répondit que vous avez aidé.
Cela ne semble pas être fonctionne plus. Fait quelque chose de changer avec $getJSON ?
Non, mais il semble qu'ils ont changé la structure de données de la réponse. Mise à jour du code et de démonstration. Merci!
OriginalL'auteur Felix Kling
Si vous avez besoin pour garantir qu'il met à jour à chaque seconde, vous voudrez probablement le modifier un peu... pour l'instant il incendies de 1 seconde après que le serveur répond avec le json, qui est le plus susceptible de ne pas 1 seconde depuis la dernière mise à jour.
Ce que vous voulez, c'est quelque chose de plus comme ceci:
Vous pourriez probablement aller encore plus loin avec ce... il y aura quelques bégaiement si une demande prend plus d'une seconde par exemple, si votre demande prend plus de temps, puis un deuxième. Mais si cette demande est de prendre plus de temps, puis un deuxième, vous avez probablement d'autres problèmes à traiter.
OriginalL'auteur Daniel Sellers