function initialize(pt) { var center = new google.maps.LatLng(10.91, 5.38); var Geocoder = new google.maps.Geocoder(); var map = new google.maps.Map(document.getElementById('map'), { zoom: 1, center: center, mapTypeId: google.maps.MapTypeId.ROADMAP }); var infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener(map, 'click', function() { infoWindow.close(); }); var partners = new google.maps.MarkerImage("/website_google_map/static/src/img/partners.png",new google.maps.Size(25, 25)); var markers = []; var onMarkerClick = function() { var marker = this; var p = marker.partner; infoWindow.setContent( '
'+ (partner_url.length ? ''+p.name +'' : ''+p.name+'' )+ '
'+ (p.type ? ' ' + p.type + '' : '')+ '
' + p.address + '
'+ '
' ); infoWindow.open(map, marker); }; var set_marker = function(partner) { if (!partner.latitude && !partner.longitude) { Geocoder.geocode( { 'address': partner.address}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { var location = results[0].geometry.location; $.post("/google_map/set_partner_position", { 'partner_id': partner.id, 'latitude': location.ob, 'longitude': location.pb }); partner.latitude = location.ob; partner.longitude = location.pb; map.setCenter(results[0].geometry.location); var marker = new google.maps.Marker({ partner: partner, map: map, icon: partners, position: location }); google.maps.event.addListener(marker, 'click', onMarkerClick); markers.push(marker); } else { console.debug('Geocode was not successful for the following reason: ' + status); } }); } else { var latLng = new google.maps.LatLng(partner.latitude, partner.longitude); var marker = new google.maps.Marker({ partner: partner, icon: partners, position: latLng }); google.maps.event.addListener(marker, 'click', onMarkerClick); markers.push(marker); } }; if (data) for (var i = 0; i < data.counter; i++) { set_marker(data.partners[i]); } var markerCluster = new MarkerClusterer(map, markers); } google.maps.event.addDomListener(window, 'load', initialize);