Example #1
0
 /**
  * @param DistanceUnit $unit
  *
  * @return Distance
  */
 public function in(DistanceUnit $unit)
 {
     if ($this->unit()->equals($unit)) {
         return $this;
     }
     return new self($this->value()->multReal(Real::fromNative($this->unit()->conversionRate($unit))), $unit);
 }
Example #2
0
 /**
  * @param Coordinate   $coordinate
  * @param DistanceUnit $unit
  */
 public function distance(Coordinate $coordinate, DistanceUnit $unit = null)
 {
     $latA = \deg2rad($this->latitude());
     $lngA = \deg2rad($this->longitude());
     $latB = \deg2rad($coordinate->latitude());
     $lngB = \deg2rad($coordinate->longitude());
     $degrees = \acos(\sin($latA) * \sin($latB) + \cos($latA) * \cos($latB) * \cos($lngB - $lngA));
     $unit = $unit === null ? DistanceUnit::METER() : $unit;
     return (new Distance(Real::fromNative($degrees * self::EARTH_RADIUS), DistanceUnit::METER()))->in($unit);
 }
Example #3
0
 /**
  * @param SelectorInterface $selector
  * @param Coordinate        $coordinate
  * @param Distance          $radius
  */
 public function __construct(SelectorInterface $selector, Coordinate $coordinate, Distance $radius = null)
 {
     $this->selector = $selector;
     $this->coordinate = $coordinate;
     $this->radius = $radius === null ? new Distance(Real::fromNative(self::DEFAULT_RADIUS), DistanceUnit::METER()) : $radius;
 }
Example #4
0
 /**
  * @param float $value
  */
 public function __construct($value)
 {
     parent::__construct($this->normalize($value));
 }
Example #5
0
 /**
  * {@inheritdoc}
  */
 protected function fromNative($value)
 {
     return Real::fromNative($value);
 }