We have a map which uses polygons to create overlays on top of countries. When a user hovers over a country the polygons change color.
When the mouse leave the country it changes back (or at least we want it to)
Us the code below what happens is that that both countries access the settings for JUST the last section of code. It seems all other code is overwritten.
I don’t know which variable to make unique.
for(var i = 0; i < germany.length; i++){
addListener( germany[ i ], germany );
}
function addListener( germany_item, tweened )
{
google.maps.event.addListener(germany_item, "mouseover",function() {
for( var i in tweened )
tweened[ i ].setOptions({ fillColor: "#DD732B", strokeColor: "#DD732B" });
});
google.maps.event.addListener(germany_item, "mouseout",function() {
for( var i in tweened )
tweened[ i ].setOptions({ fillColor: "#5EA9BD", strokeColor: "#5EA9BD" });
});
}//
for(var i = 0; i < france.length; i++){
addListener( france[ i ], france );
}
function addListener( france_item, tweened )
{
google.maps.event.addListener(france_item, "mouseover",function() {
for( var i in tweened )
tweened[ i ].setOptions({ fillColor: "#DD732B", strokeColor: "#DD732B" });
});
google.maps.event.addListener(france_item, "mouseout",function() {
for( var i in tweened )
tweened[ i ].setOptions({ fillColor: "#006886", strokeColor: "#006886" });
});
You cannot have two functions with the same name (you have two copies of
function addListener()). If you do that, then only the last one will be active (which is what you were experiencing). I would suggest you either change the name of both functions toaddListenerGermany()andaddListenerFrance()or replace them both with one function and pass in the minor difference between the two as a parameter so you can serve both need with one block of code.For example, you could change it all to this:
If you’re going to add more countries, then you can make a function for the for loop:
and so on…