J'ai besoin d'aide pour boucler un tableau et terminer ce code. Mon tableau est créé à partir d'un fichier XML. Le fichier XML contient les données de lieu de réunion à tracer sur une carte. Le tableau se termine par ressembler à ceci:Boucle dans la matrice pour la carte
markerfilter[0].name
markerfilter[0].address
markerfilter[0].Meeting_Type
etc...
markerfilter[1].name
markerfilter[1].address
markerfilter[1].Meeting_Type
etc...
Maintenant tous les marqueurs placent sur la carte. Je dois faire une boucle dans le tableau et le filtrer en fonction de certaines variables que je configure. Ceci est ma tentative de bouclage à travers le tableau:
for (var i = 0; i < markerfilter.length; i++) {
if (markerfilter[i].Meeting_Type==type&&markerfilter[i].Day_of_Meeting==day&&markerfilter[i].Time_of_Meeting==time){
//need to plot the points on the map here
}else{
//need to show blank map
}
}
Voici mon code entier. Je ne sais même pas si la boucle est au bon endroit ou si d'autres parties du code doivent entrer dans la boucle. De l'aide??
$(document).ready(function() {
$("#map").css({
height: 500,
width: 600
});
var myLatLng = new google.maps.LatLng(43.653823, -79.382843);
MYMAP.init('#map', myLatLng, 11);
$("#showmarkers").click(function(e){
MYMAP.placeMarkers('include/xml.php');
});
});
var MYMAP = {
map: null,
bounds: null
}
MYMAP.init = function(selector, latLng, zoom) {
var myOptions = {
zoom:zoom,
center: latLng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
this.map = new google.maps.Map($(selector)[0], myOptions);
this.bounds = new google.maps.LatLngBounds();
}
var markerfilter = [];
MYMAP.placeMarkers = function(filename) {
$.get(filename, function(xml){
$(xml).find("marker").each(function(){
var name = $(this).find('name').text();
var address = $(this).find('address').text();
var address2 = $(this).find('address2').text();
var Meeting_Type = $(this).find('Meeting_Type').text();
var Time_of_Meeting = $(this).find('Time_of_Meeting').text();
var Day_of_Meeting = $(this).find('Day_of_Meeting').text();
var Open_Meeting = $(this).find('Open_Meeting').text();
var Wheelchair = $(this).find('Wheelchair').text();
var ASL = $(this).find('ASL').text();
var Comments = $(this).find('Comments').text();
// create a new LatLng point for the marker
var lat = $(this).find('lat').text();
var lng = $(this).find('lng').text();
var point = new google.maps.LatLng(parseFloat(lat),parseFloat(lng));
var markerdata = {};
$(this).children().each(function() {
markerdata[this.tagName] = $(this).text();
});
markerfilter.push(markerdata);
var MeetingType = document.getElementById("Meeting_Type");
var type = MeetingType.options[MeetingType.selectedIndex].text;
var DayofMeeting = document.getElementById("Day_of_Meeting");
var day = DayofMeeting.options[DayofMeeting.selectedIndex].text;
var TimeofMeeting = document.getElementById("Time_of_Meeting");
var time = TimeofMeeting.options[TimeofMeeting.selectedIndex].text;
for (var i = 0; i < markerfilter.length; i++) {
if (markerfilter[i].Meeting_Type==type&&markerfilter[i].Day_of_Meeting==day&&markerfilter[i].Time_of_Meeting==time){
markerfilter[i].setMap(MYMAP.map);
}else{
markerfilter[i].setMap(null);
}
}
// extend the bounds to include the new point
MYMAP.bounds.extend(point);
var marker = new google.maps.Marker({
position: point,
map: MYMAP.map
});
var infoWindow = new google.maps.InfoWindow();
var html='<b><u>'+name+'</b></u><br />'+address2+'<br />'+address+'<br />'+Meeting_Type+', '+Time_of_Meeting+', '+Day_of_Meeting+'<br />Open Meeting: '+Open_Meeting+'<br />Wheelchair Accessible: '+Wheelchair+'<br />ASL: '+ASL+'<br />Comments: '+Comments;
google.maps.event.addListener(marker, 'click', function() {
infoWindow.setContent(html);
infoWindow.open(MYMAP.map, marker);
});
MYMAP.map.fitBounds(MYMAP.bounds);
});
});
console.log(markerfilter);
}
En ce moment, quand je lance mon courant, Firebug me dit: markerfilter [i] .setMap (null) n'est pas une fonction.
Et que se passe-t-il avec ce code? –