public function __construct($coordinates, Ellipsoid $ellipsoid = null)
{
if ($coordinates instanceof Address) {
$this->setLatitude($coordinates->getLatitude());
$this->setLongitude($coordinates->getLongitude());
} elseif (is_array($coordinates) && 2 === count($coordinates)) {
$this->setLatitude($coordinates[0]);
$this->setLongitude($coordinates[1]);
} elseif (is_string($coordinates)) {
$this->setFromString($coordinates);
} else {
throw new InvalidArgumentException('It should be a string, an array or a class which implements Geocoder\\Model\\Address !');
}
$this->ellipsoid = $ellipsoid ?: Ellipsoid::createFromName(Ellipsoid::WGS84);
}