Permalink
Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
90 lines (62 sloc) 2.71 KB

Distance

When Distance is supplied with two instances of LatLng it can be used to calculate the distance between the points. It does this by using a Calculator such as Great Circle and optionally a unit converter such as MetreToNauticalMile:

<?php
use Treffynnon\Navigator as N;
$coord1 = new N\LatLong(
    new N\Coordinate(10.9978),
    new N\Coordinate(35.6234)
);
$coord2 = new N\LatLong(
    new N\Coordinate(25),
    new N\Coordinate(-13.456)
);
$Distance = new N\Distance($coord1, $coord2);

Specify the calculator and conversion on the get() method of Distance:

<?php
use Treffynnon\Navigator\Distance as D;
$distance = $Distance->get(new D\Calculator\GreatCircle,
                           new D\Converter\MetreToNauticalMile);

$distance now has the distance value calculated by Great Circle in Nautical Miles.

Calculators

The Navigator library comes with four distance calculators by default:

  • The Cosine Law
  • Great Circle
  • Haversine
  • Vincenty

Of the selection Vincenty is the most accurate and also the default. It is the most computationally intensive, but not prohibitively so by any stretch.

Celestial Bodies

Most commonly and by default Navigator will be using Earth, but it can be altered by passing in a different Celestial Body such as Mars or the Moon:

<?php
use Treffynnon\Navigator\CelestialBody\Mars as M;
use Treffynnon\Navigator\Distance as D;
$distance = $Distance->get(new D\Calculator\GreatCircle(new M),
                           new D\Converter\MetreToNauticalMile);

Custom Celestial Bodies

Custom celestial bodies are very simple to setup with a set of statistics - see Treffynnon\Navigator\CelestialBody\CelestialBodyAbstract for more information.

Custom Calculators

As with coordinate parsers it is a trivial matter to create custom calculators. Simply extend the abstract class - Treffynnon\Navigator\Distance\Calculator\CalculatorAbstract.

Converters

Converters can be used independently of the Navigator library or injected into the Distance->get() method. By default Navigator returns distances in metres, but this can be converted to the following units:

  • Furlong
  • Kilometre
  • League
  • Mile
  • Nautical Mile
  • Parsec

An example follows:

<?php
use Treffynnon\Navigator\Distance\Converter\MetreToFurlong as F;
$distance = $Distance->get(null, new F);

Custom Converters

As with custom calculators, but even simpler! See Treffynnon\Navigator\Distance\Converter\ConverterAbstract.