Search code examples
javascriptcssgoogle-mapsgoogle-maps-api-3google-maps-styling

How to change buttons styles in control div in google maps?


How to get elements and change styles by clicking buttons on map control div? I like to have the same effect on map like in buttons in table.

Code: jsFiddle

Update:

With Your help I got expected result: jsFiddle2


Solution

  • I've updated your gMap.select here, it's working and hope this is what you want.

    select: function (buttonId){
        gMap.buttons.$line.className="unselected";
        gMap.buttons.$placemark.className="unselected";
        document.getElementById(buttonId).className="selected";
        var divs=window.parent.frames[0].document.getElementsByTagName('div');
        for(i=0;i<divs.length;i++)
        {
            if(divs[i].id.charAt(0)=="c") divs[i].className="unselected";
        }
        var btn='c_'+buttonId;
        window.parent.frames[0].document.getElementById(btn).className="selected";
    }
    

    Update : Here is the updated fiddle. Hope you want this.

    Updates are marked with // Update in the fiddle.

    This is another example of how you can add custom control and it's event handler in Google map (Using Javascript)

    var map;
    function initialize() {
    map = new google.maps.Map(document.getElementById('map'));
    map.setCenter(new google.maps.LatLng(48.77565,9.181802));
    map.setZoom(12);
    map.setMapTypeId( google.maps.MapTypeId.ROADMAP );
    
    var controlDiv = document.createElement('div');
    var table=document.createElement('TABLE');
    var tbdy=document.createElement('TBODY');
    var tr=document.createElement('TR');
    
    var btn1=document.createElement('input');
    btn1.setAttribute("type", "button");
    btn1.id="c_placemark_b";
    btn1.setAttribute("value", "Button One");
    var td1=document.createElement('TD');
    td1.appendChild(btn1);
    
    var btn2=document.createElement('input');
    btn2.setAttribute("type", "button");
    btn2.id="c_line_b";
    btn2.setAttribute("value", "Button Two");
    var td2=document.createElement('TD');
    td2.appendChild(btn2);
    
    tr.appendChild(td1);
    tr.appendChild(td2);
    tbdy.appendChild(tr);
    table.appendChild(tbdy);
    controlDiv.appendChild(table);
    
    google.maps.event.addDomListener(btn1, 'click', function() {
        //DoSomething
        alert(this.id);
    });
    
    google.maps.event.addDomListener(btn2, 'click', function() {
        //DoSomething
        alert(this.id);
    });
    
    controlDiv.index = 1;
    map.controls[google.maps.ControlPosition.TOP_RIGHT].push(controlDiv);
    }