[pascal]function TDXCGIsoMap.PointToCell(X,Y : Integer): TPoint;
Var
BX,BY,CX,CY,DX,DY,AD, BD : Integer;
begin
X := X + MapLeft+32;
Y := Y + MapTop;
Y := Y - 192;
BX := X div 128;
BY := (Y div 64)*2;
DX := ABS(((BX * 12 + 64) - X);
// DY := ABS((((BY * 64) - 224)) - Y);
DY := ABS((((BY div 2) * 64) + 32) - Y);
AD := DX + 2 * DY;
X := X - 64;
Y := Y + 32;
CX := X div 128;
CY := (Y div 64) * 2 - 1;
DX := ABS(((CX * 12 + 64) - X);
DY := ABS((((CY div 2) * 64) + 96) - Y);
BD := DX + 2 * DY;
If AD < BD then
Begin
Result := Point(BX,BY);
End
Else
Begin
Result := Point(CX,CY);
End;
end;
[/pascal]

My tiles were 128*64

Basically the logic I used was
- Every point could be in one of two different tiles.
- Identify these two tiles
- work out distance to center
- closest to center was the tile I wanted.

Not very clear I know but I hope it helps.