geo_make_bbox

geo/geo.inc, line 168

Versions
6
geo_make_bbox($target, $limit)

Code

<?php
function geo_make_bbox($target, $limit) {
  $x = $target['lon'];
  $y = $target['lat'];
  $offset_x = $limit / (GEO_DEGREE_M * cos($y));
  $offset_y = $limit / GEO_DEGREE_M;

  $offset_x = $limit / GEO_DEGREE_M; // TODO Miles
  $offset_y = $limit / round(GEO_DEGREE_M * cos($x / 92215));

  $bbox = array(
    'points' => array(
      array('lon' => $x - $offset_x, 'lat' => $y + $offset_y),
      array('lon' => $x + $offset_x, 'lat' => $y + $offset_y),
      array('lon' => $x + $offset_x, 'lat' => $y - $offset_y),
      array('lon' => $x - $offset_x, 'lat' => $y - $offset_y),
      array('lon' => $x - $offset_x, 'lat' => $y + $offset_y),
    ),
  );
  // TODO call a function?
  $wkt = '';
  foreach ($bbox['points'] as $p) $wkt .= $p['lon'] .' '. $p['lat'] .', ';
  $bbox['wkt'] = 'POLYGON(('. substr($wkt, 0, -2) .'))';
  return $bbox;
}
?>