coordinates()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 2
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
namespace ZeroConfig\GeoDistance;
3
4
use Measurements\Measurement;
5
use Measurements\Units\UnitLength;
6
use ZeroConfig\GeoDistance\Sphere\CelestialBody\Earth;
7
8
// @codeCoverageIgnoreStart
9
10
/**
11
 * Create a position value object for the given coordinates.
12
 *
13
 * @param float $latitude
14
 * @param float $longitude
15
 *
16
 * @return PositionInterface
17
 */
18
function coordinates(float $latitude, float $longitude): PositionInterface
19
{
20
    return Position::create($latitude, $longitude);
21
}
22
23
/**
24
 * Calculate the metric distance between the given positions.
25
 *
26
 * @param PositionInterface $start
27
 * @param PositionInterface $end
28
 *
29
 * @return Measurement
30
 */
31
function distance(
32
    PositionInterface $start,
33
    PositionInterface $end
34
): Measurement {
35
    /** @var DistanceCalculatorInterface $calculator */
36
    static $calculator;
37
38
    if (!$calculator instanceof DistanceCalculatorInterface) {
39
        $calculator = new ConvertedDistanceCalculator(
40
            new DistanceCalculator(new Earth()),
41
            UnitLength::kilometers()
42
        );
43
    }
44
45
    return $calculator->calculate($start, $end);
46
}
47
48
// @codeCoverageIgnoreEnd
49