Определение города

Определить город по IP 
 static function getCity($ip = ""){
 if($ip){
 return \Bitrix\Main\Service\GeoIp\Manager::getCityName($ip,'ru');
 }else{
 return \Bitrix\Main\Service\GeoIp\Manager::getCityName(\Bitrix\Main\Service\GeoIp\Manager::getRealIp(),'ru');
 }
 }
 
 Получаем IP 
 function getUserIp(){
 return \Bitrix\Main\Service\GeoIp\Manager::getRealIp();
}
 
 Геокодирование адреса 
 function askYandex($address){
 $params = array(
 'geocode' => $address, // адрес
 'format' => 'json', // формат ответа
 'results' => 1, // количество выводимых результатов
 'apikey' => 'cd351fdb-0d22-4dd6-a6e5-a400114e552c', // ваш api key
 );
 $response = json_decode(file_get_contents('https://geocode-maps.yandex.ru/1.x/?' . http_build_query($params, '', '&')));
 if ($response->response->GeoObjectCollection->metaDataProperty->GeocoderResponseMetaData->found > 0)
 {
 $pos = $response->response->GeoObjectCollection->featureMember[0]->GeoObject->Point->pos;

 $arrCoords = explode(' ', $pos);
 return ['lat' => $arrCoords[1], 'lng' => $arrCoords[0]];
 }
 else
 {
 return 'Ничего не найдено';
 }
}
 
 Геокодирование адреса 
 function getListAddr($address){
 $params = array(
 'geocode' => $address, // адрес
 'format' => 'json', // формат ответа
 'results' => 5, // количество выводимых результатов
 'apikey' => 'cd351fdb-0d22-4dd6-a6e5-a400114e552c', // ваш api key
 );
 $response = json_decode(file_get_contents('http://geocode-maps.yandex.ru/1.x/?' . http_build_query($params, '', '&')));

 if ($response->response->GeoObjectCollection->metaDataProperty->GeocoderResponseMetaData->found > 0)
 {
 $arResult = [];
 foreach($response->response->GeoObjectCollection->featureMember as $k => $data){
 $arResult[$k]['name'] = $data->GeoObject->name;
 $arResult[$k]['street'] = $data->GeoObject->metaDataProperty->GeocoderMetaData->Address->Components[4]->name;
 $arResult[$k]['house'] = $data->GeoObject->metaDataProperty->GeocoderMetaData->Address->Components[5]->name;
 }
 return $arResult;
 }
 else
 {
 return 'Ничего не найдено';
 }
}