/** * Create Route. * * Creates a Route object from an array of comma separated coordinates, * e.g. ['52.54628,13.30841', '51.476780,0.000479', ...]. * * @param string[] $arrayOfCommaSeparatedCoordinates * @return Route */ public function createRoute($arrayOfCommaSeparatedCoordinates) { $coordinates = []; foreach ($arrayOfCommaSeparatedCoordinates as $item) { $valueArray = explode(',', $item); if (2 != count($valueArray)) { if (!is_null($this->logger)) { $this->logger->error(sprintf('"%s" are not valid coordinates.', $item)); } continue; } try { Assertion::allNumeric($valueArray); } catch (AssertionFailedException $e) { if (!is_null($this->logger)) { $this->logger->error(sprintf('Given coordinates "%s" are invalid. %s', $item, $e->getMessage())); continue; } } $lat = (double) $valueArray[0]; $long = (double) $valueArray[1]; try { $coordinate = new Coordinate($lat, $long); } catch (\DomainException $e) { if (!is_null($this->logger)) { $this->logger->error(sprintf('Given coordinates "%s" are invalid. %s', $item, $e->getMessage())); } continue; } $coordinates[] = $coordinate; } $route = new Route(); $route->setInputRoute($coordinates); return $route; }