Index: trunk/webapps/js/cctvLayer.js
===================================================================
--- trunk/webapps/js/cctvLayer.js	(revision 326)
+++ trunk/webapps/js/cctvLayer.js	(revision 335)
@@ -43,4 +43,6 @@
     cctvLayer = new google.maps.Data();
     cctvLayer.loadGeoJson(kCCTVfile);
+    // Define the clickable area on an icon (the default is too big)
+    var clickRegion = {coords: [0,0,14,8], type: "rect"}  
     cctvLayer.setStyle(function(feature)
     {
@@ -48,4 +50,5 @@
         return {
             icon: makecctvIcon(feature.getProperty("nearVDS")),
+            shape: clickRegion,
             title: feature.getId() + " " +feature.getProperty('locationName'),
             visible: false  
Index: trunk/webapps/js/cmsLayer.js
===================================================================
--- trunk/webapps/js/cmsLayer.js	(revision 334)
+++ trunk/webapps/js/cmsLayer.js	(revision 335)
@@ -34,15 +34,18 @@
     cmsLayer = new google.maps.Data();
     cmsLayer.setMap(map);
-    cmsLayer.loadGeoJson(kCMSfile);  
+    cmsLayer.loadGeoJson(kCMSfile);
+    // Define the clickable area on a CMS icon (the default is too big)
+    var clickRegion = {coords: [0,0,18,15], type: "rect"}
     cmsLayer.setStyle(function(feature)
-    {
-        // return the StyleOptions
-        return {
-            icon: iconCMSidle,
-            title: feature.getId()+ " " +feature.getProperty("location")+ " " 
-                    + feature.getProperty("street"),
-            visible: false
-        };
-    });
+        {
+            // return the StyleOptions
+            return {
+                icon: iconCMSidle,
+                shape: clickRegion,
+                title: feature.getId()+ " " +feature.getProperty("location")+ " " 
+                        + feature.getProperty("street"),
+                visible: false
+            };
+        });
     
     cmsLayer.addListener('click', function(event)
