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

Popular posts from this blog

c++ - Convert big endian to little endian when reading from a binary file -

C#: Application without a window or taskbar item (background app) that can still use Console.WriteLine() -

unicode - Are email addresses allowed to contain non-alphanumeric characters? -