<!-- Google maps and jQuery script, based on http://marcgrabanski.com/article/jquery-google-maps-tutorial-basics -->
<html>
<head>
<title>Google Maps and jQuery extended</title>
<!-- http://code.google.com/apis/ajaxlibs/documentation/ -->
<script type="text/javascript" src="/js/jquery-1.2.6.js"></script>
<script src="http://maps.google.com/maps?file=api&v=2&sensor=false&key=ABQIAAAAhYLDigsVpz84AGTe6WVrZBQ9ha3oDqOvCaQiRzD8u5icJ0_NnRR-C1D6Azqe8x6Iv-vl7Ok6IA1T6w" type="text/javascript"></script>
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){ //Start script when ready
if (document.getElementById("map_canvas")) {//Checks to see that the page element exists and to prevent conflict with other maps
//Default map center location
var defaultLat = 50.5;
var defaultLon = -1.4;
var markers = new Array();
markers[0] = new Array(new GMarker(new GLatLng(51.308124, -0.656756)), "Location1", "<strong>Address Line</strong><br/>Some information<br />Can go here<br />01234 567 890");
markers[1] = new Array(new GMarker(new GLatLng(50.82719221187368, -1.1597442626953125)), "Location2", "<strong>Address Line</strong><br/>Some information<br />Can go here<br />01234 567 890<br /><a href='http://www.google.com'>google.com</a>");
markers[2] = new Array(new GMarker(new GLatLng(50.933883, -1.397458)), "Location3", "<strong>Address Line</strong><br/>Some information<br />Can go here<br />01234 567 890<br /><a href='http://www.google.com'>google.com</a>");
markers[3] = new Array(new GMarker(new GLatLng(51.41, -0.76)), "Location4", "<strong>Address Line</strong><br/>Some information<br />Can go here<br />01234 567 890");
markers[4] = new Array(new GMarker(new GLatLng(50.93, -1.26)), "Location5", "<strong>Address Line</strong><br/>Some information<br />Can go here<br />01234 567 890<br /><a href='http://www.google.com'>google.com</a>");
markers[5] = new Array(new GMarker(new GLatLng(50.75, -1.38999)), "Location6", "<strong>Address Line</strong><br/>Some information<br />Can go here<br />01234 567 890<br /><a href='http://www.google.com'>google.com</a>");
var map = new google.maps.Map2($("#map_canvas").get(0));//Initialise google maps
map.setCenter(new GLatLng(defaultLat, defaultLon), 8);//Set location to the default and zoom level to 8
map.disableDoubleClickZoom();//Disable zooming
//This section works fine but does not animate on load
/*
$(markers).each(function(i,marker){
map.addOverlay(marker[0]);
$("<li />")
.html(markers[i][1])//Use list item label from array
.click(function(){
displayPoint(marker[0], i);
setActive(this);//Show active state
if ($('#map_message').is(':hidden')) {//Allow toggling of active state
setActive();
}
})
.appendTo("#map_list");
GEvent.addListener(marker[0], "click", function(){
displayPoint(marker[0], i);
setActive(i);//Show active location
if ($('#map_message').is(':hidden')) {//Allow toggling of active state
setActive();
}
});
});
*/
$.each(markers,function(i,marker){
var delayTime = ((i * 3000) / (0.5 * markers.length));//Delay time decreases as number of markers increases
setTimeout(function(){
map.addOverlay(marker[0]);
$("<li />")
.html(markers[i][1])//Use list item label from array
.click(function(){
displayPoint(marker[0], i);
setActive(this);//Show active state
})
.appendTo("#map_list");
GEvent.addListener(marker[0], "click", function(){
displayPoint(marker[0], i);
setActive(i);//Show active location
});
displayPoint(marker[0], i);
setActive(i);//Show active location
if (i == (markers.length - 1)) {//If last item in array
setTimeout(function(){//Remove active class and fade marker after delay
$("#map_message").fadeOut();
//setActive();
}, 3500);
}
}, delayTime);
});
$("#map_list").css("opacity","0.2").animate({opacity: 1}, 1100);//Fade in menu
$("#map_message").appendTo(map.getPane(G_MAP_FLOAT_SHADOW_PANE));
function displayPoint(marker, index){
if ($('#map_message').is(':hidden')) {//Allow toggling of markers
$('#map_message').fadeIn();
}
else{//Remove all .active classes and hide markers
$('#map_message').hide();
$(".active").removeClass();
}
//$("#map_message").hide();//Default behaviour, doesn't allow toggling
var moveEnd = GEvent.addListener(map, "moveend", function(){
var markerOffset = map.fromLatLngToDivPixel(marker.getLatLng());
$("#map_message")
.html(markers[index][2])//Use information from array
.fadeIn()
.css({ top:markerOffset.y, left:markerOffset.x });
GEvent.removeListener(moveEnd);
});
map.panTo(marker.getLatLng());
}
function setActive(el){
$(".active").removeClass();//Remove all .active classes
$("#map_list").find('li').eq(el).addClass('active');//Find list element equal to index number and set active
$(el).addClass('active');//Set active if list element clicked directly
}
}//End if map_canvas exists
}); //End onReady
</script>
<style type="text/css" media="screen">
.map{
height: 500px;
width: 800px;
margin: 0;
padding: 0;
border: 0;
}
#map_canvas{
float: left;
}
#map_list{
float: left;
height: 500px;
width: 150px;
margin: 0;
padding: 0;
background: #EBEBEB;
list-style: none;
}
#map_list li{
padding: .5em;
}
#map_list li:hover {
background: #555;
color: #FFF;
cursor: pointer;
cursor: hand;
}
#map_list li.active{
background: #555;
color: #FFF;
}
#map_list li.active:hover{
background: #363636;
cursor: default;
}
#map_message{
display: none;
position: absolute;
width: 12em;
padding: .5em;
background: #555;
font-size: .9em;
color: #FFF;
}
#map_message img{
border: 0;
margin-top: 0;
}
#map_message a{
color: #CAEAF9;
border-bottom: 1px solid #EBEBEB;
}
#map_message a:hover{
color: #FFF;
border-bottom: 1px solid #CAEAF9;
}
p{
clear: both;
margin-top: 1em;
}
</style>
<!--[if IE 7]>
#map_list li{
width: 100%;
zoom: 1;
float: left;
}
<![endif]-->
</head>
<body>
<div class="map" id="map_canvas"></div>
<ul class="map_list" id="map_list"></ul>
<div id="map_message"></div>
<p>You could also try the example that <a href="/gmapjqueryhover.html"> utilises hover effects</a>.</p>
</body>
</html>
http://www.erikwhite.net/gmapjquery.html
|