/** @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; }
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; }