Distance::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 7
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 5
nc 1
nop 4
1
<?php
2
3
namespace Wolnosciowiec\CoordinatesBundle\Model\Entity\Coordinates;
4
5
/**
6
 * Distance
7
 * ==============
8
 * Calculates distance between two coordinates
9
 *
10
 * @package Wolnosciowiec\CoordinatesBundle\Model\Entity\Coordinates
11
 */
12
class Distance
13
{
14
    /** @var float $lat1 */
15
    protected $lat1;
16
17
    /** @var float $lat2 */
18
    protected $lat2;
19
20
    /** @var float $lon1 */
21
    protected $lon1;
22
23
    /** @var float $lon2 */
24
    protected $lon2;
25
26
    /**
27
     * @param float $lat1
28
     * @param float $lat2
29
     * @param float $lon1
30
     * @param float $lon2
31
     */
32
    public function __construct($lat1, $lat2, $lon1, $lon2)
33
    {
34
        $this->lat1 = $lat1;
35
        $this->lat2 = $lat2;
36
        $this->lon1 = $lon1;
37
        $this->lon2 = $lon2;
38
    }
39
40
    /**
41
     * Get distance between our two points in kilometers or miles
42
     */
43
    public function getDistance()
44
    {
45
        $diff = $this->lon1 - $this->lon2;
46
        $dist = sin(deg2rad($this->lat1))
47
            * sin(deg2rad($this->lat2))
48
            + cos(deg2rad($this->lat1))
49
            * cos(deg2rad($this->lat2))
50
            * cos(deg2rad($diff));
51
52
        $miles      = $dist * 60 * 1.1515;
53
        $kilometers = $miles * 1.609344;
54
55
        return [
56
            'miles'      => $miles,
57
            'kilometers' => $kilometers,
58
        ];
59
    }
60
61
    /**
62
     * @return float
63
     */
64
    public function getInKilometers()
65
    {
66
        return $this->getDistance()['kilometers'];
67
    }
68
69
    /**
70
     * @return float
71
     */
72
    public function getInMiles()
73
    {
74
        return $this->getDistance()['miles'];
75
    }
76
}