From OpenSocial Directory
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="Geolocate my friends" height="500" width="700" author="Balachandar Muruganantham" author_email="mbchandar@gmail.com">
<Require feature="opensocial-0.5" />
<Require feature="dynamic-height" />
</ModulePrefs>
<Content type="html">
<![CDATA[
<script type="text/javascript" src="http://www.google.com/jsapi?key=ABQIAAAASXmVvbqMX11TuormEoTYQhRSk02GZpXEMAkEqFagruxbBFc2zRQvvXnyqc-2fivXs0hB8dLDi4zgNg"></script>
<script type="text/javascript">
google.load("maps", "2.x");
var map = null;
// Call this function when the page has been loaded
function initialize() {
map = new google.maps.Map2(document.getElementById("map"));
map.setCenter(new google.maps.LatLng(34,0), 2);
map.addControl(new google.maps.LargeMapControl());
map.addControl(new google.maps.MapTypeControl());
map.setMapType(G_NORMAL_MAP);
getData();
}
function getData() {
var myparam = {"profileDetail": 'contact'};
//document.getElementById('message').innerHTML = 'Requesting friends...';
var req = opensocial.newDataRequest();
req.add(req.newFetchPersonRequest('VIEWER',myparam),"viewer");
req.add(req.newFetchPeopleRequest ('OWNER_FRIENDS'), 'viewer_friends');
req.send(onLoadFriends);
};
function onLoadFriends(data) {
var viewer = data.get("viewer").getData();
var name = viewer.getDisplayName();
var thumb = viewer.getField(opensocial.Person.Field.THUMBNAIL_URL);
var profile = viewer.getField(opensocial.Person.Field.PROFILE_URL);
var geo_approx_lat = viewer.obj_.Keywords[1].Value;
var geo_approx_long = viewer.obj_.Keywords[2].Value;
profile = 'http://sandbox.orkut.com' + profile;
var html = '<img src="' + thumb + '"/>';
html += '<a href="' + profile + '" target="_top">' + name + '</a>' + " lat " + geo_approx_lat + "long " + geo_approx_long;
onefriend = name + '<br><img src="' + thumb + '" alt="'+name+'" title="'+name+'"/>';
var blueIcon = new google.maps.Icon(G_DEFAULT_ICON);
blueIcon.image = "http://gmaps-samples.googlecode.com/svn/trunk/markers/blue/blank.png";
markerOptions = { icon:blueIcon };
var point = new google.maps.LatLng(geo_approx_lat,geo_approx_long);
var marker = new google.maps.Marker(point,markerOptions);
map.addOverlay(createMarker(point,onefriend));
var viewer_friends = data.get("viewer_friends").getData();
viewer_friends.each(function(person) {
var name = person.getDisplayName();
var thumb = person.getField(opensocial.Person.Field.THUMBNAIL_URL);
var profile = person.getField(opensocial.Person.Field.PROFILE_URL);
var geo_approx_lat = person.obj_.Keywords[1].Value;
var geo_approx_long = person.obj_.Keywords[2].Value;
var point = new google.maps.LatLng(geo_approx_lat,geo_approx_long);
var marker = new google.maps.Marker(point);
profile = 'http://sandbox.orkut.com' + profile;
html += '<a href="' + profile + '" target="_top" style="float:left">';
html += '<img src="' + thumb + '"/>';
html += '</a>';
onefriend = name + '<br><img src="' + thumb + '" alt="'+name+'" title="'+name+'"/>';
map.addOverlay(createMarker(point,onefriend));
});
//document.getElementById('message').innerHTML = html;
}
function createMarker(point, msg) {
var marker = new google.maps.Marker(point);
google.maps.Event.addListener(marker,"click", function() {
msg ="<p style='font-size:11px;font-family:Verdana, Sans, Helvetica;'>"+msg+"</p>";
map.openInfoWindowHtml(point, msg);
});
return marker;
}
google.setOnLoadCallback(initialize);
</script>
<div id="map" style="height: 98%; width: 98%;border: solid 1px #000000"></div>
<div id="message"> </div>
]]>
</Content>
</Module>