Index: src/django_gheat/website/nodelist.py
===================================================================
--- src/django_gheat/website/nodelist.py	(revision 9192)
+++ src/django_gheat/website/nodelist.py	(revision 9196)
@@ -16,22 +16,27 @@
 import tempfile
 
-def make_list(swlat,swlon,nelat,nelon):
-  import simplejson
+def make_list(zoom,lat,lon):
+
+  maxlat = (lat + 0.01)
+  maxlon = (lon + 0.01)
+  minlat = (lat - 0.01)
+  minlon = (lon - 0.01)
 
   filter = {}
   filter.update({
-    'accespoint__ssid__contains' : 'WirelessLeiden',
-    'latitude__lt' : swlat,
-    'longitude__lt' : swlon,
-    'latitude__gt' : nelat,
-    'longitude__gt' : nelon
+    'ssid__contains' : 'WirelessLeiden',
+    'meting__latitude__lt' : maxlat,
+    'meting__longitude__lt' : maxlon,
+    'meting__latitude__gt' : minlat,
+    'meting__longitude__gt' : minlon
   })
 
-  html = Meting.objects.filter(**filter).values('accespoint__ssid').distinct()
-  nodelist = simplejson.dumps(list(html))
-  return HttpResponse(nodelist, content_type = 'application/javascript; charset=utf8')
+  objquery = Accespoint.objects.filter(**filter).distinct()
+  nodelist = serializers.serialize('json', objquery, fields=('fields','ssid'))
 
-def serve_nodelist(request,swlat,swlon,nelat,nelon):
-  html = make_list(float(swlat),float(swlon),float(nelat),float(nelon))
-  return HttpResponse(html)
+  return nodelist
 
+def serve_nodelist(request,zoom,lat,lon,):
+  html = make_list(int(zoom), float(lat), float(lon))
+  return HttpResponse(html, content_type = 'application/javascript; charset=utf8')
+
Index: src/django_gheat/website/static/heatmap.js
===================================================================
--- src/django_gheat/website/static/heatmap.js	(revision 9192)
+++ src/django_gheat/website/static/heatmap.js	(revision 9196)
@@ -21,10 +21,8 @@
 	map.events.register('click', map, GetMousePos);
 	function GetMousePos(pos) {
-		var pixbuffer = 100;
-		var sw = map.getLonLatFromPixel(new OpenLayers.Pixel(pos.xy.x+pixbuffer,pos.xy.y-pixbuffer));
-		var ne = map.getLonLatFromPixel(new OpenLayers.Pixel(pos.xy.x-pixbuffer,pos.xy.y+pixbuffer));
-		var pointsw = OpenLayers.Layer.SphericalMercator.inverseMercator(sw.lon, sw.lat);
-		var pointne = OpenLayers.Layer.SphericalMercator.inverseMercator(ne.lon, ne.lat);
-		getNodeList(pointsw, pointne);
+		var pix = map.getLonLatFromPixel(new OpenLayers.Pixel(pos.xy.x,pos.xy.y));
+		var mousepos = OpenLayers.Layer.SphericalMercator.inverseMercator(pix.lon, pix.lat);
+		var zoomlevel = map.getZoom();
+		getNodeList(zoom, mousepos);
 	}
 
@@ -49,5 +47,5 @@
 }
 
-function getNodeList(sw, ne){
+function getNodeList(zoomlevel, mousepos){
   var nodelist;
   if (window.XMLHttpRequest){
@@ -62,10 +60,10 @@
   nodelist.onreadystatechange=function(){
     if (nodelist.readyState==4 && nodelist.status==200){
-      txt=nodelist.responseText
+      txt=nodelist.responseText;
       document.getElementById('nodelist').innerHTML=txt;
     }
   }
 
-  nodelist.open("GET","/website/nodelist/" + sw.lat + "," + sw.lon + "," + ne.lat + "," + ne.lon,true);
+  nodelist.open("GET","/website/nodelist/" + zoomlevel + "," + mousepos.lat + "," + mousepos.lon,true);
   nodelist.send();
 }
Index: src/django_gheat/website/urls.py
===================================================================
--- src/django_gheat/website/urls.py	(revision 9192)
+++ src/django_gheat/website/urls.py	(revision 9196)
@@ -31,5 +31,5 @@
 urlpatterns += patterns('website.nodelist',
     url(
-        regex = r'^nodelist/(?P<swlat>[0-9.]+),(?P<swlon>[0-9.]+),(?P<nelat>[0-9.]+),(?P<nelon>[0-9.]+)$',
+        regex = r'^nodelist/(?P<zoom>\d+),(?P<lat>[0-9.]+),(?P<lon>[0-9.]+)$',
         view = 'serve_nodelist',
         name = 'serve_nodelist',
