public function distanceFrom(Coordinate $coordinate, DistanceUnit $unit = null, DistanceFormula $formula = null)
{
if (null === $unit) {
$unit = DistanceUnit::METER();
}
if (null === $formula) {
$formula = DistanceFormula::FLAT();
}
$baseThis = static::getBaseCoordinate($this);
$baseCoordinate = static::getBaseCoordinate($coordinate);
$distance = new Distance();
$distance->setFrom($baseThis)->setTo($baseCoordinate)->in($unit->toNative());
$value = \call_user_func(array($distance, $formula->toNative()));
return new Real($value);
}