Skip to content

Instantly share code, notes, and snippets.

@simenbrekken
Created August 22, 2011 11:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save simenbrekken/1162159 to your computer and use it in GitHub Desktop.
Save simenbrekken/1162159 to your computer and use it in GitHub Desktop.
Clustering algorithm
var clusters = [];
while (walks.length > 0) {
var walk = walks.pop();
var point = walk.startPoint;
var count = 0;
var lat = 0;
var lng = 0;
for (var i = walks.length - 1; i >= 0; i--) {
var adjacent = walks[i];
var adjacentPoint = adjacent.startPoint;
var distance = pixelDistance(point, adjacentPoint, zoom);
if (minDistance > distance) {
walks.splice(i, 1);
count++;
lat += adjacentPoint.lat;
lng += adjacentPoint.lng;
}
}
var cluster;
if (count > 0) {
count++;
lat += point.lat;
lng += point.lng;
cluster = {
count: count,
point: {
lat: lat / count,
lng: lng / count
}
};
} else {
cluster = walk;
}
clusters.push(cluster);
}
return clusters;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment