I haven't done much with this myself but it does seem to work.
if ((count (getpos this isFlatEmpty [20, 0, 0.5, 10, 0, false, objNull])) > 0) then {hint "Area ok"};
If you were to put that in a gamelogic or units init it will tell you the area is ok if the gradient is less than 0.5 and it's 20meters from the nearest object. As for the rest of the numbers you'll have to look here. You can replace the hint part with the spawning of the heli pad.
_isFlat = (position _preview) isflatempty [
(sizeof typeof _preview) / 2, //--- Minimal distance from another object
0, //--- If 0, just check position. If >0, select new one
0.7, //--- Max gradient
(sizeof typeof _preview), //--- Gradient area
0, //--- 0 for restricted water, 2 for required water,
false, //--- True if some water can be in 25m radius
_preview //--- Ignored object
];
I'm not saying it's the correct way of doing it but it's as far as I've gotten.