Voilà mon problème, j'essaye d'afficher des polyline en les récupérant via un un tableau d'objet en passant par deux boucles. Quand il s'agit du premier objet, les données sont parfaitements récupérées mais à partir du second tour j'ai le message d'erreur "Cannot set property '0' of undefined". Pour que cela vous paraîsse plus clair voici mon code :
//Déclaration des variables
var arrow = [{}];
var affichePoly = new Array();
var polylines = new Array([]);
var linesymbol;
var offsetTemp;
var parcours = localStorage.getItem("parcours");
parcours = JSON.parse(parcours);
/*Objet où je récupère les coordonées, structure de
l'objet: parcours = [{id:0,
path : [{latitude:0,
longitude:0}],
etc : "..."]}*/
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
center: {lat: -34.397, lng: 150.644},
zoom: 8
});
for(var i in parcours){
console.log(i);
for (var j in parcours[i].path){
//c'est à cette ligne là que ça bloque à partir du moment où i=1
polylines[i][j]=new google.maps.LatLng(parseFloat(parcours[i].path[j].latitude), parseFloat(parcours[i].path[j].longitude));
offsetTemp = (250*j)/parcours[i].length + '%';
linesymbol = {
path:google.maps.SymbolPath.FORWARD_CLOSED_ARROW,
};
arrow[i][j] = {
icon : linesymbol,
offset : offsetTemp
};
}
console.log(polylines);
affichePoly.push(new google.maps.Polyline({
path : polylines[i],
icons: arrow[i],
geodesic: true,
strokeColor: parcours[i].stroke.hexa,
strokeOpacity: 1.0,
strokeWeight: 3
}));
affichePoly[i].setMap(map);
console.log(affichePoly);
}
}
Utilise la méthode push pour ajouter des éléments a un tableau.
Sa fonctionne sur le 1er elements car tu définie ta variable comme ceci
polylines = newArray([]);
Si tu fait :
polylines = newArray([], []);
sa fonctionnera pour les 2 premiers poly.
Google map API Cannot set property 0 of undefined
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.