javascript - Google maps - pass information into an event Listener -
i think scope problem. since event triggered after have added listeners num_markers has been overridden next cycle in loop.
is there way can pass variables event function?
i tried approach didn't me. google maps: event listener remembering final value of variable
var map = new google.maps.map(document.getelementbyid("map_canvas"), myoptions); var info_window = new google.maps.infowindow(); var markers = []; function load_markers() { var bounds_url = map.getbounds().tourlvalue(); $.ajax({ url:'/retailer-markers?bounds='+bounds_url, datatype: 'json', success: function(data) { for(i = 0; < data.length; i++) { var marker_pos = new google.maps.latlng(data[i]['lat'], data[i]['long']); //every time listener event called number length of array var marker_num = get_markers_count(); markers[marker_num] = new google.maps.marker({ position: marker_pos, map: map, title:data[i]['title'], icon: image }); google.maps.event.addlistener(markers[marker_num], 'click', function() { info_window.setcontent('hello'); var pos = markers[marker_num].getposition(); info_window.setposition(pos); info_window.open(map, markers[marker_num]); }); } } }); }
the solution use this
marker details. other variables can set onto marker marker.set('some_var', data);
$.ajax({ url:'/retailer-markers?bounds='+bounds_url, datatype: 'json', success: function(data) { for(i = 0; < data.length; i++) { var info_window = get_info_window(); var marker_pos = new google.maps.latlng(data[i]['lat'], data[i]['long']); marker_num = get_markers_count(); marker = new google.maps.marker({ position: marker_pos, map: map, title:data[i]['title'], icon: image }); markers.push(marker); marker.set('retailer', data[i]); google.maps.event.addlistener(marker, 'click', function() { var retailer = this.get('retailer'); info_window.setcontent(retailer['name']); info_window.open(map, this); }); } } });
Comments
Post a Comment