/** @return lat_lng */
 public function get_source_as_wgs84()
 {
     switch ($this->source) {
         case 0:
             $point = geometry::os_to_lat_long($this->OS6);
             break;
         case 1:
             $point = geometry::os_to_lat_long($this->OS8);
             break;
         case 2:
             $point = gps_datums::convert(new lat_lng($this->OSGB36_lat, $this->OSGB36_lng), 'OSGB36', 'WGS84');
             break;
         case 3:
             $point = new lat_lng($this->WGS84_lat, $this->WGS84_lng);
             break;
         default:
             $point = new lat_lng(0, 0);
             break;
     }
     return $point;
 }
示例#2
0
文件: track.php 项目: robchett/uknxcl
 public function set_task($coordinates)
 {
     $points = explode(';', $coordinates);
     $task = new defined_task();
     /**
      * @var $waypoints \classes\lat_lng[]
      */
     $waypoints = [];
     foreach ($points as &$a) {
         $point = \classes\geometry::os_to_lat_long($a);
         $waypoints[] = $point;
     }
     if (count($waypoints) == 3 && $waypoints[0]->get_distance_to($waypoints[2]) < 800) {
         $task->type = 'or';
         $task->title = 'Defined Out & Return';
         $task->ftid = $task::TYPE_OUT_AND_RETURN;
     } else {
         if (count($waypoints) == 4 && $waypoints[0]->get_distance_to($waypoints[3]) < 800) {
             $task->type = 'tr';
             $task->title = 'Defined Triangle';
             $task->ftid = $task::TYPE_TRIANGLE;
         } else {
             $task->type = 'go';
             $task->title = 'Open distance';
             $task->ftid = $task::TYPE_OPEN_DISTANCE;
         }
     }
     for ($i = 0; $i < count($waypoints) - 1; $i++) {
         $task->distance += $waypoints[$i]->get_distance_to($waypoints[$i + 1]);
     }
     return $task;
 }