// A Google map library
// $Id: gmap.js 733 2007-04-27 20:59:52Z bb $
// My Google map API key
var Gkey = 'ABQIAAAAfJCC_y3t6PhD554YaP1N3BRzNbUJ5gPsIhhZDTbsJVnTmyE66xSPz4nmEa7HmbRS-3Yrms4FAbkBxg';
// Include the Google Map API; this line requires 2butils.js
include('http://maps.google.com/maps?file=api&v=2&key=' + Gkey);
// Convert a decimal degree value to degress, minutes and seconds
function decToDMS(dec) {
var deg = Math.floor(dec);
dec = (dec - deg) * 60;
var min = Math.floor(dec);
var sec = (dec - min) * 60;
sec = Math.round(100 * sec) / 100; // round to 1/100th precision
return deg + "° " + min + "′ " + sec + "″";
}
// Convert latitude and longitude to a HTML string
function LatLngToHtml(lat, lng) {
lat = decToDMS(Math.abs(lat)) + (lat < 0 ? ' S' : ' N');
lng = decToDMS(Math.abs(lng)) + (lng < 0 ? ' W' : ' E');
return lat + ', ' + lng;
}
// Create a marker at the given point with the given label
function GMcreateMarker(point, label) {
var marker = new GMarker(point);
GEvent.addListener(marker, "click", function() {
marker.openInfoWindowHtml(label);
});
return marker;
}
// Initialize a map and return it
function GMinit(mapid) {
var div = document.getElementById(mapid);
if (!div) {
alert("Map region not found");
return null;
}
if (!GBrowserIsCompatible()) {
div.innerHTML = '<p>Sorry, your browser is not compatible with Google Maps.</p>';
return null;
}
var map = new GMap2(div);
if (parseInt(div.style.height) >= 350) {
map.addControl(new GOverviewMapControl());
map.addControl(new GLargeMapControl());
map.addControl(new GScaleControl());
}
else
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
// map.enableDoubleClickZoom();
map.setCenter(new GLatLng(47.2, 7.5), 8);
// Allow to click anywhere and display the clicked point's coordinates
GEvent.addListener(map, 'click', function(obj, point) {
map.lastPoint = point; // Keep a copy for the main page
if (point)
this.openInfoWindowHtml(point, LatLngToHtml(point.lat(), point.lng()));
});
// Add a new member function that creates labeled markers
map.addMarkerOverlay = function(lat, lng, label) {
var point = new GLatLng(lat, lng);
this.addOverlay(GMcreateMarker(point, label));
return point;
}
// Register the cleanup function
window.onunload = GUnload;
return map;
}