PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` 90 || $max > 90) { throw new \LogicException('Latitude cannot be greater that 90.0'); } return $this->randomFloat(6, $min, $max); } /** * @example '86.211205' * * @return float Uses signed degrees format (returns a float number between -180 and 180) */ public function longitude(float $min = -180.0, float $max = 180.0): float { if ($min < -180 || $max < -180) { throw new \LogicException('Longitude cannot be less that -180.0'); } if ($min > 180 || $max > 180) { throw new \LogicException('Longitude cannot be greater that 180.0'); } return $this->randomFloat(6, $min, $max); } /** * @example array('77.147489', '86.211205') * * @return array{latitude: float, longitude: float} */ public function localCoordinates(): array { return [ 'latitude' => static::latitude(), 'longitude' => static::longitude(), ]; } private function randomFloat(int $nbMaxDecimals, float $min, float $max): float { if ($min > $max) { throw new \LogicException('Invalid coordinates boundaries'); } return round($min + mt_rand() / mt_getrandmax() * ($max - $min), $nbMaxDecimals); } }