Notice: mise à jour de la carte
Voici ma fonction que j'utilise pour dessiner un Dépliant carte de mon site web:
function drawTweetMap(points) {
if (tweetMap != null)
tweetMap.remove();
var london = [51.505, -0.09];
tweetMap = L.map('tweetMap').setView(london, 5);
var cloudmadeUrl = 'http://{s}.mqcdn.com/tiles/1.0.0/osm/{z}/{x}/{y}.jpg';
var subDomains = ['otile1','otile2','otile3','otile4'];
var cloudmadeAttrib = 'Data, imagery and map information provided by <a href="http://open.mapquest.co.uk" target="_blank">MapQuest</a>, <a href="http://www.openstreetmap.org/" target="_blank">OpenStreetMap</a> and contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/" target="_blank">CC-BY-SA</a>';
L.tileLayer(cloudmadeUrl,
{attribution: cloudmadeAttrib,
maxZoom: 18,
subdomains: subDomains})
.addTo(tweetMap);
var markers = L.markerClusterGroup();
var points_rand = L.geoJson(points, {onEachFeature: onEachFeature});
markers.addLayer(points_rand);
tweetMap.addLayer(markers);
tweetMap.fitBounds(markers.getBounds());
}
Cette fonction est appelée périodiquement:
mapWatch = setInterval(function() {
retrieveCurrentTweetPositions()},
numMinutes*60*1000);
dans cette fonction:
function retrieveCurrentTweetPositions() {
var points = retrieveCurrentPositions();
var mapInput = translatePointsInMapFormat(points);
drawTweetMap(mapInput);
}
Malheureusement, si la carte est tirée de cette façon, le résultat est le suivant:
Dans d'autres questions, j'ai trouvé qu'il est possible d'invalider la taille de la carte pour résoudre ce problème, il a été suggéré d'appeler sur le démarrage de cette fonction:
function updateTweetMapPosition() {
setTimeout(function(){
tweetMap.invalidateSize(true);}
,500)
}
Je l'ai fait, et cela résout le problème au cours de la première carte de dessin. Cependant, lorsque je tente de redessiner la carte pour une seconde fois, le résultat est comme suit:
Quelqu'un a rencontré ce problème? Comment puis-je refaire la carte avec un plein chargement de son contenu?
Grâce.
MODIFIER
Voici le jsFiddle: http://jsfiddle.net/qzpwvqzk/
OriginalL'auteur Eleanore | 2015-04-21
Vous devez vous connecter pour publier un commentaire.
Prendre un coup d'oeil à la
redraw()
méthode.tweetMap.redraw();
?J'ai essayé en remplaçant les deux premières lignes avec
if (tweetMap != null) {tweetMap.eachLayer(function (layer) {layer.redraw();}); }
mais il est dit que la méthode n'est pas définieredraw()
doit être appelée surtweetMap
.Il se passe la même chose. Il dit qu'il n'est pas défini:
TypeError: 'undefined' is not a function (evaluating 'tweetMap.redraw()')
Et où êtes-vous appeler qui? Un jsFiddle avec votre code serait super utile 🙂
OriginalL'auteur Brett DeWoody