Перейти к основному контенту

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

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