How to use $query->add_where_expression in hook_views_query_alter
If you look at the documentation for views_plugin_query_default::add_where_expression(), you will notice the following note. (The emphasys is mine.)


  The caller is reponsible for ensuring that all fields are fully qualified (TABLE.FIELD) and that the table already exists in the query. Internally the dbtng method "where" is used.


Looking at this Stack Overflow question, I would get your code should be the following one.

function mymodule_views_query_alter(&amp;$view, &amp;$query) {
  switch($view-&gt;name) {
    case 'latlong':
      $alias = $query-&gt;add_table('field_data_field_latitude');  
      $query-&gt;add_where_expression(0, "$alias.field_latitude_value = :latitude", array(':latitude' =&gt; 53.9519);      
      break;
  }
}


Since the latitude is a floating point, I would use a comparison that is different from $alias.field_latitude_value = :latitude, for example checking the latitude is inside the range [$latitude - $epsilon, $latitude + $epsilon].