use Symfony\Component\Routing\RouterInterface;
/**
- * Helps manage map
+ * Manages map
*/
class MapUtil {
/**
const highStroke = '#3333c3';
/**
- * The high stroke size
+ * The high stroke width
*/
const highStrokeWidth = 4;
const stroke = '#00c3f9';
/**
- * The stroke size
+ * The stroke width
*/
const strokeWidth = 2;
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;
}
/**
//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
];
* @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);
//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
];
*/
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');
*/
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');