summaryrefslogtreecommitdiff
path: root/addons/website_google_map/static/src/js/google_map.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/website_google_map/static/src/js/google_map.js')
-rw-r--r--addons/website_google_map/static/src/js/google_map.js84
1 files changed, 84 insertions, 0 deletions
diff --git a/addons/website_google_map/static/src/js/google_map.js b/addons/website_google_map/static/src/js/google_map.js
new file mode 100644
index 00000000000..df5b7011ed7
--- /dev/null
+++ b/addons/website_google_map/static/src/js/google_map.js
@@ -0,0 +1,84 @@
+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(
+ '<div class="marker">'+
+ (partner_url.length ? '<a target="_top" href="'+partner_url+p.id+'"><b>'+p.name +'</b></a>' : '<b>'+p.name+'</b>' )+ '<br/>'+
+ (p.type ? ' <b>' + p.type + '</b>' : '')+
+ ' <pre>' + p.address + '</pre>'+
+ '</div>'
+ );
+ 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);
+