public static NodeAddress Create(NodeAddressCell cell) { var address = new NodeAddress(); var addressCell = cell; while (addressCell != null) { address.Path.AddFirst(addressCell); addressCell = addressCell.GetAncestor(); } return(address); }
public Node GetNode(Byte zoomLevel, GeoPoint center) { var address = NodeAddress.Create(zoomLevel, center); var clustererNode = Root; var node = address.Path.First; while (node != address.Path.Last) { var addressCell = node.Value; var x = addressCell.X % 2; var y = addressCell.Y % 2; clustererNode = clustererNode.GetChildNode(x, y); node = node.Next; } clustererNode = clustererNode.GetChildNode(node.Value.X % 2, node.Value.Y % 2); clustererNode.GatherObjects(); return(clustererNode); }