google maps api 3 - Infobubble only displaying content from last marker added via PHP/Mysql with tabs -


i've been trying infobubbles work 2 tabs on map populated markers mysql database ajax call.

the problem every infobubble displaying same content in tabs, last marker added. here entire js script, appreciated.

      var script = '<script type="text/javascript" src="http://google-maps-' +       'utility-library-v3.googlecode.com/svn/trunk/infobubble/src/infobubble';   script += '.js"><' + '/script>';   document.write(script);  var customicons = {    free: {      icon: 'http://labs.google.com/ridefinder/images/mm_20_blue.png',      animation: google.maps.animation.drop,     shadow: 'http://labs.google.com/ridefinder/images/mm_20_shadow.png'    },    paid: {      icon: 'http://labs.google.com/ridefinder/images/mm_20_red.png',      animation: google.maps.animation.drop,     shadow: 'http://labs.google.com/ridefinder/images/mm_20_shadow.png'    }  };   // end custom icons    var map, infobubble;   function initialize() {      var myoptions = {        zoom: 13,        maptypeid: google.maps.maptypeid.roadmap      };      map = new google.maps.map(document.getelementbyid('map'),          myoptions);       // try html5 geolocation      if(navigator.geolocation) {        navigator.geolocation.getcurrentposition(function(position)          {          var pos = new google.maps.latlng(position.coords.latitude,position.coords.longitude);           var marker = new google.maps.marker({            map: map,            position: pos,                        icon:'images/markers/you.png',                        animation: google.maps.animation.drop,            title: 'your location.'          });       infobubble = new infobubble({       maxwidth: 300,       borderradius: 10,       borderwidth: 1,       bordercolor: '#2c2c2c',       shadowstyle: 1     });     var infowindow = new google.maps.infowindow;     // change depending on name of php file    downloadurl("phpsqlajax_genxml.php", function(data) {     var xml = data.responsexml;      var markers = xml.documentelement.getelementsbytagname("marker");      (var = 0; < markers.length; i++)      {          var name = markers[i].getattribute("name");          var address = markers[i].getattribute("address");          var citystate = markers[i].getattribute("citystate");          var phone = markers[i].getattribute("phone");          var type = markers[i].getattribute("type");           var point = new google.maps.latlng(            parsefloat(markers[i].getattribute("lat")),            parsefloat(markers[i].getattribute("lng")));          var html = "<b>" + name + "</b> <br/>" + address + "<br/>" + citystate + "<br/>" + phone;  //html inside infowindow          var description = "<b>" + name + "</b> <br/>" + address + "<br/>" + citystate + "<br/>" + phone;  //html inside infowindow         var icon = customicons[type] || {};          var marker = new google.maps.marker({              map: map,              position: point,              icon: icon.icon,              shadow: icon.shadow,             animation: google.maps.animation.drop         });          bindinfowindow(marker, map, infobubble, html, description);      }      infobubble.addtab('tab 1', html);     infobubble.addtab('tab 2', description);    });            map.setcenter(pos);        }, function() {          handlenogeolocation(true);        });      } else {        // browser doesn't support geolocation        handlenogeolocation(false);      }    }      function handlenogeolocation(errorflag) {      if (errorflag) {        var content = 'error: geolocation service failed.';      } else {        var content = 'error: browser doesn\'t support geolocation.';      }       var options = {        map: map,        position: new google.maps.latlng(60, 105),        content: content      };       var infobubble = new google.maps.infobubble(options);      map.setcenter(options.position);    }   // additional functions related db listing function   function bindinfowindow(marker, map, infobubble, html) {    google.maps.event.addlistener(marker, 'click', function() {      //infobubble.setcontent(html);      infobubble.open(map, marker);   });  }   function downloadurl(url, callback) {    var request = window.activexobject ?        new activexobject('microsoft.xmlhttp') :        new xmlhttprequest;     request.onreadystatechange = function() {      if (request.readystate == 4) {        request.onreadystatechange = donothing;        callback(request, request.status);      }    };     request.open('get', url, true);    request.send(null);  }   function donothing() {}     function addtab() {     var title = document.getelementbyid('tab-title').value;     var content = document.getelementbyid('tab-content').value;      if (title != '' && content != '') {       infobubble.addtab(title, content);     }   }   google.maps.event.adddomlistener(window, 'load', initialize);  

the code sets content depending on marker commented out:

//infobubble.setcontent(html); 

therefor content of last infowindow created displayed.

working example, including tab content


Comments

Popular posts from this blog

monitor web browser programmatically in Android? -

Shrink a YouTube video to responsive width -

wpf - PdfWriter.GetInstance throws System.NullReferenceException -