X-Git-Url: https://git.rapsys.eu/packbundle/blobdiff_plain/29d552c341c632e185c043037923319a0527be39..HEAD:/Util/MapUtil.php diff --git a/Util/MapUtil.php b/Util/MapUtil.php index 9bd8acd..b7d2232 100644 --- a/Util/MapUtil.php +++ b/Util/MapUtil.php @@ -14,7 +14,7 @@ namespace Rapsys\PackBundle\Util; use Symfony\Component\Routing\RouterInterface; /** - * Helps manage map + * Manages map */ class MapUtil { /** @@ -55,7 +55,7 @@ class MapUtil { const highStroke = '#3333c3'; /** - * The high stroke size + * The high stroke width */ const highStrokeWidth = 4; @@ -87,7 +87,7 @@ class MapUtil { const stroke = '#00c3f9'; /** - * The stroke size + * The stroke width */ const strokeWidth = 2; @@ -109,107 +109,82 @@ class MapUtil { const zoom = 17; /** - * The RouterInterface instance + * Creates a new map util + * + * @param RouterInterface $router The RouterInterface instance + * @param SluggerUtil $slugger The SluggerUtil instance */ - protected RouterInterface $router; + function __construct(protected RouterInterface $router, protected SluggerUtil $slugger, protected string $fill = self::fill, protected int $fontSize = self::fontSize, protected string $highFill = self::highFill, protected int $highFontSize = self::highFontSize, protected int $highRadius = self::highRadius, protected string $highStroke = self::highStroke, protected int $highStrokeWidth = self::highStrokeWidth, protected int $radius = self::radius, protected string $stroke = self::stroke, protected int $strokeWidth = self::strokeWidth) { + } /** - * The SluggerUtil instance + * Get fill color */ - protected SluggerUtil $slugger; + function getFill() { + return $this->fill; + } /** - * The fill color + * Get font size */ - public string $fill; + function getFontSize() { + return $this->fontSize; + } /** - * The font size + * Get high fill color */ - public int $fontSize; - - /** - * The high fill color - */ - public string $highFill; + function getHighFill() { + return $this->highFill; + } /** - * The font size + * Get high font size */ - public int $highFontSize; + function getHighFontSize() { + return $this->highFontSize; + } /** - * The radius size + * Get high radius size */ - public int $highRadius; + function getHighRadius() { + return $this->highRadius; + } /** - * The high stroke color + * Get high stroke color */ - public string $highStroke; + function getHighStroke() { + return $this->highStroke; + } /** - * The stroke size + * Get high stroke width */ - public int $highStrokeWidth; - - /** - * The stroke color - */ - public string $stroke; + function getHighStrokeWidth() { + return $this->highStrokeWidth; + } /** - * The stroke size + * Get radius size */ - public int $strokeWidth; + function getRadius() { + return $this->radius; + } /** - * The radius size + * Get stroke color */ - public int $radius; + function getStroke() { + return $this->stroke; + } /** - * Creates a new map util - * - * @param RouterInterface $router The RouterInterface instance - * @param SluggerUtil $slugger The SluggerUtil instance + * Get stroke width */ - function __construct(RouterInterface $router, SluggerUtil $slugger, string $fill = self::fill, int $fontSize = self::fontSize, string $highFill = self::highFill, int $highFontSize = self::highFontSize, int $highRadius = self::highRadius, string $highStroke = self::highStroke, int $highStrokeWidth = self::highStrokeWidth, int $radius = self::radius, string $stroke = self::stroke, int $strokeWidth = self::strokeWidth) { - //Set router - $this->router = $router; - - //Set slugger - $this->slugger = $slugger; - - //Set fill - $this->fill = $fill; - - //Set font size - $this->fontSize = $fontSize; - - //Set highFill - $this->highFill = $highFill; - - //Set high font size - $this->highFontSize = $highFontSize; - - //Set high radius size - $this->highRadius = $highRadius; - - //Set highStroke - $this->highStroke = $highStroke; - - //Set high stroke size - $this->highStrokeWidth = $highStrokeWidth; - - //Set radius size - $this->radius = $radius; - - //Set stroke - $this->stroke = $stroke; - - //Set stroke size - $this->strokeWidth = $strokeWidth; + function getStrokeWidth() { + return $this->strokeWidth; } /** @@ -234,8 +209,8 @@ class MapUtil { //Return array return [ 'caption' => $caption, - 'link' => $this->router->generate('rapsys_pack_map', ['hash' => $link, 'updated' => $updated, 'latitude' => $latitude, 'longitude' => $longitude, 'zoom' => $zoom + 1, 'width' => $width * 2, 'height' => $height * 2]), - 'src' => $this->router->generate('rapsys_pack_map', ['hash' => $src, 'updated' => $updated, 'latitude' => $latitude, 'longitude' => $longitude, 'zoom' => $zoom, 'width' => $width, 'height' => $height]), + 'link' => $this->router->generate('rapsyspack_map', ['hash' => $link, 'updated' => $updated, 'latitude' => $latitude, 'longitude' => $longitude, 'zoom' => $zoom + 1, 'width' => $width * 2, 'height' => $height * 2]), + 'src' => $this->router->generate('rapsyspack_map', ['hash' => $src, 'updated' => $updated, 'latitude' => $latitude, 'longitude' => $longitude, 'zoom' => $zoom, 'width' => $width, 'height' => $height]), 'width' => $width, 'height' => $height ]; @@ -252,6 +227,12 @@ class MapUtil { * @return array The multi map data */ public function getMultiMap(string $caption, int $updated, array $coordinates, int $width = self::width, int $height = self::height): array { + //Without coordinates + if (empty($coordinates)) { + //Return empty array + return []; + } + //Set latitudes $latitudes = array_map(function ($v) { return $v['latitude']; }, $coordinates); @@ -282,8 +263,8 @@ class MapUtil { //Return array return [ 'caption' => $caption, - 'link' => $this->router->generate('rapsys_pack_multimap', ['hash' => $link, 'updated' => $updated, 'latitude' => $latitude, 'longitude' => $longitude, 'coordinates' => $coordinate, 'zoom' => $zoom + 1, 'width' => $width * 2, 'height' => $height * 2]), - 'src' => $this->router->generate('rapsys_pack_multimap', ['hash' => $src, 'updated' => $updated, 'latitude' => $latitude, 'longitude' => $longitude, 'coordinates' => $coordinate, 'zoom' => $zoom, 'width' => $width, 'height' => $height]), + 'link' => $this->router->generate('rapsyspack_multimap', ['hash' => $link, 'updated' => $updated, 'latitude' => $latitude, 'longitude' => $longitude, 'coordinates' => $coordinate, 'zoom' => $zoom + 1, 'width' => $width * 2, 'height' => $height * 2]), + 'src' => $this->router->generate('rapsyspack_multimap', ['hash' => $src, 'updated' => $updated, 'latitude' => $latitude, 'longitude' => $longitude, 'coordinates' => $coordinate, 'zoom' => $zoom, 'width' => $width, 'height' => $height]), 'width' => $width, 'height' => $height ]; @@ -410,13 +391,14 @@ class MapUtil { */ public static function latitudeToSexagesimal(float $latitude): string { //Set degree - $degree = $latitude % 60; + //TODO: see if round or intval is better suited to fix the Deprecated: Implicit conversion from float to int loses precision + $degree = round($latitude) % 60; //Set minute - $minute = ($latitude - $degree) * 60 % 60; + $minute = round(($latitude - $degree) * 60) % 60; //Set second - $second = ($latitude - $degree - $minute / 60) * 3600 % 3600; + $second = round(($latitude - $degree - $minute / 60) * 3600) % 3600; //Return sexagesimal longitude return $degree.'°'.$minute.'\''.$second.'"'.($latitude >= 0 ? 'N' : 'S'); @@ -431,13 +413,14 @@ class MapUtil { */ public static function longitudeToSexagesimal(float $longitude): string { //Set degree - $degree = $longitude % 60; + //TODO: see if round or intval is better suited to fix the Deprecated: Implicit conversion from float to int loses precision + $degree = round($longitude) % 60; //Set minute - $minute = ($longitude - $degree) * 60 % 60; + $minute = round(($longitude - $degree) * 60) % 60; //Set second - $second = ($longitude - $degree - $minute / 60) * 3600 % 3600; + $second = round(($longitude - $degree - $minute / 60) * 3600) % 3600; //Return sexagesimal longitude return $degree.'°'.$minute.'\''.$second.'"'.($longitude >= 0 ? 'E' : 'W');