I read all the issues regarding how to set openlayers and views to hide empty map on node but I could not managed to accomplish that.
Struggling for one day I found a solution that work great and I want to share.

- Go to your views block display which is displaying your map.
- Select contextual filter and add the same field which is used to collect the map data coordinates (this field is normally selected in views display openlayers data overlay)

Where it say "When the filter value is NOT available"
select: "Provide default value" then "PHP Code".
In the textbox copy the following code ( Do not use php tags)

if (arg(0) == 'node') {
$nid = arg(1);
$node = node_load($nid);
}
$geo = field_get_items('node', $node, 'field_yourfield_name');
if(!$geo){
return TRUE;
}

Your have to change "field_yourfield_name" with the name of your actual field which is used to collect the coordinated data for the map (You can see the field name under content type > manage fields and the name of the field is in the column "Machine Name".)

where it say "When the filter value IS available or a default is provided"
select "Specify validation criteria" and the "PHP Code".
In the textbox copy the following code ( Do not use php tags)

return TRUE;

- Press Apply display
- Save your views

Now views should not display anymore an empty map on node.

Hope this can be useful for somebody having the same issue as me.