function ScanAirspaceCircleBounds($i, $bearing) {
  global $AirspaceArea;
  list($lat,$lon)= FindLatitudeLongitude($AirspaceArea[$i]->Latitude, 
                        $AirspaceArea[$i]->Longitude, $bearing, $AirspaceArea[$i]->Radius,1,1 );

  $AirspaceArea[$i]->minx = min($lon, $AirspaceArea[$i]->minx);
  $AirspaceArea[$i]->maxx = max($lon, $AirspaceArea[$i]->maxx);
  $AirspaceArea[$i]->miny = min($lat, $AirspaceArea[$i]->miny);
  $AirspaceArea[$i]->maxy = max($lat, $AirspaceArea[$i]->maxy);

}
示例#2
0
function CalculateCircle($lat, $lng, $radius)
{
    $Rotation = 1;
    $StartBearing = 0;
    $EndBearing = 360 - 8;
    list($StartLat, $StartLon) = FindLatitudeLongitude($lat, $lng, 0, $radius, 1, 1);
    list($EndLat, $EndLon) = FindLatitudeLongitude($lat, $lng, $EndBearing, $radius, 1, 1);
    $points = array();
    $i = 0;
    $points[$i]->lat = $StartLat;
    $points[$i]->lng = $StartLon;
    $i++;
    while (abs($EndBearing - $StartBearing) > 10) {
        $StartBearing += $Rotation * 10;
        if ($StartBearing > 360) {
            $StartBearing -= 360;
        }
        if ($StartBearing < 0) {
            $StartBearing += 360;
        }
        list($lat_temp, $lng_temp) = FindLatitudeLongitude($lat, $lng, $StartBearing, $radius, 1, 1);
        $points[$i]->lat = $lat_temp;
        $points[$i]->lng = $lng_temp;
        $i++;
    }
    $points[$i]->lat = $EndLat;
    $points[$i]->lng = $EndLon;
    $i++;
    $points[$i]->lat = $StartLat;
    $points[$i]->lng = $StartLon;
    return $points;
}