Bonjour,
* J'ai une liste d'ID (un par client) et à chaque client est associé plusieurs marqueurs sur une carte leaflet.
* Je parcours la base de donnée, trouve quel est le plus grand ID, et crée une markerMap (tableau à 2 dimensions) où je pourrai associer IDs et marqueurs :
* Ensuite je récupère en base de données le nombre d'IDs et le nombre de marqueurs associés à chaque ID (qui est variable d'un client à l'autre) et fais 2 boucles imbriquées pour parcourir les IDs et leurs marqueurs associés :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 var markerMap = new Array( <?php include('get_maxId.php');?> ); // pour les IDs des clients for (i=0;i<markerMap.length;i++) { markerMap[i] = new Array(); // ici on mettra les IDs des marqueurs de chaque client (nombre indéterminé) };
*** Mon problème est dans cette 2ème boucle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 //php pour récupérer en bdd et qui retourne un objet JSON (accessible ds la boucle via data[i]), puis : for (var i = 0; i < data.length; i++) { // boucle sur les IDs var combien_marqueurs = data[i].combien_marqueurs; var pseudoId = data[i].id; for (var j = 1; j <= combien_stories; j++) { // boucle sur les marqueurs //... } }
Dans cette boucle, je crée les marqueurs et les rentre dans la markerMap pour pouvoir les manipuler ensuite :
Tout va bien, le j est bien pris en compte. Mais, ensuite, j'utilise une fonction pour enregistrer la position des marqueurs dans la bdd lorsqu'ils sont déplacés sur la carte (on dragend) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part eval('markerMap[clientId]['+j+'] = marker');
Et là, bien sûr, c'est le drame! Lorsqu'on drag un marqueur la 2ème boucle en j++ est finie depuis longtemps et je ne peux enregistrer en base que le dernier marqueur de chaque utilisateur. Bien sûr ça fonctionne si je met le numéro du marqueur en dur, mais j'aimerai éviter :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 marker.on('dragend', function(event) { var result = this.getLatLng(); var lati = result.lat; var longi = result.lng; $.post('set_position_marqueur.php', { marqueurId: j, latitude: lati, longitude: longi}); });
>>> QUESTION :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 if (j==1){ marker.on('dragend', ... $.post('set_poi.php', { marqueurId: 1, latitude: lati, longitude: longi}); } if (j==2){ marker.on('dragend', ... $.post('set_poi.php', { marqueurId: 2, latitude: lati, longitude: longi}); } 3,4,5 etc.
Y a-t-il un moyen de retrouver depuis le marqueur sa place dans la markerMap afin de savoir si on est en train de manipuler le marqueur 1, le 2, le 3... Pour l'id du client, je me sers d'une variable session_id, donc pas de soucis.
Je voudrais donc juste trouver markerMap[clientId][ça]
parser le tableau? faire une sorte de tableau reverse (je l'avais fait en flash)? créer une autre var qui stocke la "vraie" valeur de j? ou autre?
merci bcp!
Partager