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.
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:
