Niestandardowy infoWindow w google maps

Pewnie nie raz chcieliście zmienić standardowy dymek infoWindow na coś ładniejszego własnego pomysłu. Opiszę jak to zrobić korzystając z dodatkowej biblioteki infobox. Użycie jej jest bardzo proste. Wystarczy załączyć plik javascript z biblioteką na swojej stronie. Nie zapomnijmy również o załączaniu api googla.

Poniżej przedstawiam skrypt prostej mapki z jednym markerem, po którego kliknięciu pojawia się niestandardowy dymek (infobox).
var lat = 52.229676, lon = 21.012229;
//opcje mapy
var mapOptions = {
	center: new google.maps.LatLng(lat, lon),
	zoom: 4,
	mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map"), mapOptions);
//marker
var marker = new google.maps.Marker({
	position: new google.maps.LatLng(lat, lon)
});
marker.setMap(map);

//obsługa zdarzenia kliknięcia na marker
google.maps.event.addListener(marker,"click",function()
{
	var boxText = document.createElement("div");
	//style css infoboxa
	boxText.style.cssText = "margin-top: 5px; padding: 5px;text-align: center;";
	//zawartość dymka
	boxText.innerHTML = '<div style="height:30px;margin-left: 7px;width: 230px;font-size: 12px; font-weight:bold;">City Hall, Sechelt - British Columbia</div><img style="width:130px;" src="img/photo.jpg">';
	//opcje
	var myOptions = {
		content: boxText
	   ,disableAutoPan: false
	   ,maxWidth: 0
	   ,pixelOffset: new google.maps.Size(-130, -170)
	   ,zIndex: null
	   ,boxStyle: {
		 background: "url('img/tooltip.png') no-repeat"
		 ,opacity: 1
		 ,width: "257px"
		 ,height: "160px"
		}
	   ,closeBoxMargin: "-7px -7px 0 0"
	   ,closeBoxURL: "img/close.png"
	   ,infoBoxClearance: new google.maps.Size(1, 1)
	   ,isHidden: false
	   ,pane: "floatPane"
	   ,enableEventPropagation: false
	};

	var ib = new InfoBox(myOptions);
	ib.open(map, marker);
});
W pliku html wystarczy oprócz skryptów dodać w sekcji body
<div id="map" style="width:500px; height:350px;"></div>
Jak widać powyżej w celu dodania dymka wystaczy określić jego opcje, stworzyć nowy obiekt InfoBox i wywołać na nim metodę open. Dodatkowe źródła informacji: