Index: marker.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/gmap/js/Attic/marker.js,v
retrieving revision 1.1.2.3
diff -u -r1.1.2.3 marker.js
--- marker.js	30 Jun 2008 16:36:05 -0000	1.1.2.3
+++ marker.js	7 Jul 2008 15:29:40 -0000
@@ -6,19 +6,35 @@
 
 Drupal.gmap.addHandler('gmap', function(elem) {
   var obj = this;
+  obj._markerref = [];
 
   obj.bind('init', function() {
     if (obj.vars.behavior.autozoom) {
       obj.bounds = new GLatLngBounds();
     }
+
+    // To increase speed of adding markers to the map, use a mapwide click handler.
+    GEvent.addListener(obj.map, 'click', function(overlay, latlng) {
+      if (overlay && overlay.hasOwnProperty('_gmap_marker_ref')) {
+        obj.change('clickmarker', -1, obj._markerref[overlay['_gmap_marker_ref']]);
+      }
+    });
+    if (obj.vars.behavior.extramarkerevents) {
+      GEvent.addListener(obj.map, 'dblclick', function(overlay, latlng) {
+        if (overlay && overlay.hasOwnProperty('_gmap_marker_ref')) {
+          obj.change('dblclickmarker', -1, obj._markerref[overlay['_gmap_marker_ref']]);
+        }
+      });
+    }
+
   });
 
   obj.bind('addmarker',function(marker) {
     var m = Drupal.gmap.factory.marker(new GLatLng(marker.latitude,marker.longitude), marker.opts);
     marker.marker = m;
-    GEvent.addListener(m,'click',function() {
-      obj.change('clickmarker',-1,marker);
-    });
+    m['_gmap_marker_ref'] = obj['_markerref'].push(marker) - 1;
+
+    // Note: These are slow when applied to individual markers.
     if (obj.vars.behavior.extramarkerevents) {
       GEvent.addListener(m,'mouseover',function() {
         obj.change('mouseovermarker',-1,marker);
@@ -26,9 +42,6 @@
       GEvent.addListener(m,'mouseout',function() {
         obj.change('mouseoutmarker',-1,marker);
       });
-      GEvent.addListener(m,'dblclick',function() {
-        obj.change('dblclickmarker',-1,marker);
-      });
     }
     /**
      * Perform a synthetic marker click on this marker on load.

