Определение города
Определить город по 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 'Ничего не найдено';
}
}