function createAverageLatLng(ary) {
    var lat = 0;
    var lng = 0;

    jQuery.each(ary, function (i, p) {
        lat += p.lat();
        lng += p.lng();
    });
    return new google.maps.LatLng(lat / ary.length, lng / ary.length);
}

function addPointFromElement(map, element) {
    var lat = parseFloat(element.getAttribute('geo:lat'));
    var lng = parseFloat(element.getAttribute('geo:long'));
    var result = new google.maps.LatLng(lat, lng);
    new google.maps.Marker({ position: result, map: map });
    return result;
}

$(document).ready(function() {
    var options = {
        zoom: 10,
        mapTypeId: google.maps.MapTypeId.HYBRID
    };
    var map = new google.maps.Map(document.getElementById('map'), options);
    var points = $('a, span').map(function (index, element) {
        var p = addPointFromElement(map, element);
        $(element).hover(function () { map.panTo(p) });
        return p;
    }).get();
    map.setCenter(createAverageLatLng(points));
});
