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.
Comments
Post a Comment