2011-09-24 4 views
1

Ce tableau javascript contient les coordonnées que j'envoie à l'API Google Maps pour tracer un chemin dans la carte. Parfois, les coordonnées [0] sont vides car elles dépendent d'un itinéraire précédent qui pourrait exister ou non (en utilisant Google Maps).Modifier un tableau avec jQuery pour obtenir des index séquencés

Ceci est mon code:

coordinates = []; 

(entre ici je cherche un chemin précédent (coordonnées [0]) Dans ce cas, nous Asuming qu'il est nul Nous avons donc ces valeurs:..

coordinates[1] = '50,20'; //route 1 
coordinates[2] = '10,18'; //route 2 
coordinates[3] = '27,34'; //route 3 

Après cela, je dessine le chemin dans la carte comme ceci:

travel_path = new google.maps.Polyline({ 
    path: coordinates 
}); 
travel_path.setMap(map); 

le problème: Quand il y a no coordonnées [0] (ce qui se passe quand il n'y a pas de segment précédent du chemin de déplacement) la méthode .Polyline renvoie une erreur car elle doit recevoir un tableau avec des index séquencés à partir de 0.

La question: Comment puis-je convertir mon tableau original à ce (index de comparaison):

coordinates[0] = '50,20'; //route 1 
coordinates[1] = '10,18'; //route 2 
coordinates[2] = '27,34'; //route 3 

Répondre

2

coordinates.shift() supprime le premier élément du tableau.

var coordinates = []; 
//coordinates[0] = undefined; 
coordinates[1] = '50,20'; //route 1 
coordinates[2] = '10,18'; //route 2 
coordinates[3] = '27,34'; //route 3 
coordinates.shift(); 

coordinates.shift() Ce phénomène est causé:

coordinates[0] = coordinates[1]; 
coordinates[1] = coordinates[2]; 
coordinates[2] = coordinates[3]; 
//coordinates[3] is removed. 
0

Utilisation:

travel_path = new google.maps.Polyline({ 
    path:(function(){ 
     var arrayCoord=[],k=0; 
     for(var key in coordinates){ 
      arrayCoord[k]=coordinates[key]; 
      ++k; 
     } 
     return arrayCoord; 
    })() 
}); 
travel_path.setMap(map); 
+0

cela fonctionne, mais les autres solutions sont plus rapides et plus propre – andufo

1

Comme Rob dit, changement d'utilisation(), vous pouvez faire une vérification pour voir si les coordonnées [0] est définie en premier.

if(!coordinates[0]) 
    coordinates.shift(); 
+0

:) if (typeof coordonnées [0] == 'undefined') coordinates.shift(); – Darm

+0

'! Coordonnées [0]' fait la même chose, et c'est plus court: -P –

+0

Vous avez manqué le point. Ça ne fait pas la même chose. Qu'en est-il des coordonnées [0] = 0? – Darm

Questions connexes