• Модуль: location
  • Путь к файлу: ~/bitrix/modules/location/lib/source/google/converters/byqueryconverter.php
  • Класс: BitrixLocationSourceGoogleConvertersByQueryConverter
  • Вызов: ByQueryConverter::convert
public function convert(array $data)
{
	if(isset($data['status']) && $data['status'] != 'OK')
	{
		$errorMessage = $data['error_message'].' ('.$data['status'].')' ?? $data['status'];
		throw new RuntimeException($errorMessage, GoogleErrorCodes::CONVERTER_BYQUERY_ERROR);
	}

	if(!isset($data['results']) || !is_array($data['results']))
	{
		return null;
	}

	$result = new Collection;

	foreach($data['results'] as $item)
	{
		if(isset($item['types']))
		{
			$type = $this->convertTypes($item['types'], LocationType::class);
		}
		else
		{
			$type = AddressFieldType::UNKNOWN;
		}

		$location = (new Location())
			->setSourceCode(GoogleRepository::getSourceCode())
			->setExternalId($item['place_id'])
			->setName($item['name'])
			->setLongitude($item['geometry']['location']['lng'])
			->setLatitude($item['geometry']['location']['lat'])
			->setType($type)
			->setLanguageId($this->languageId);

		$result->addItem($location);
	}

	return $result;
}