File: /home/k/kulikosl/kulikosl.beget.tech/public_html/back/zootheme 2612/functions/yandex.php
<?php
function mygetcoods(){
$answer=write_yandex_adress_en($_POST['adres']);
echo json_encode($answer,JSON_UNESCAPED_UNICODE);
wp_die();
}
add_action('wp_ajax_getcoods', 'mygetcoods');
add_action('wp_ajax_nopriv_getcoods', 'mygetcoods');
function write_yandex_adress_en($adress)
{
global $wpdb;
$table_adres = $wpdb->get_blog_prefix() . 'api_adresses';
$data['postal_code']='';
$data['formatted']='';
$data['short']='';
$data['url']='';
$data['country']='';
$data['province_1']='';
$data['province_2']='';
$data['area_1']='';
$data['area_2']='';
$data['locality']='';
$data['locality_clean']='';
$data['locality_clean_lat']='';
$data['locality_type']='город';
$data['district_1']='';
$data['district_2']='';
$data['street']='';
$data['street_clean']='';
$data['street_type']='';
$data['house']='';
$data['latitude']='';
$data['longitude']='';
$data['last_id']=0;
$data['result']=0;
$data['primary address']='';
$answer='';
$wp_version='';
$url='https://geocode-maps.yandex.ru/1.x/?apikey=45b87c68-cd94-4edd-a6cb-bf64e56ead36&format=json&lang=ru_RU&geocode='.$adress;
$remote_get = wp_remote_get( $url, array(
'timeout' => 5,
'redirection' => 5,
'httpversion' => '1.0',
'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ),
'blocking' => true,
'headers' => array(),
'cookies' => array(),
'body' => null,
'compress' => false,
'decompress' => true,
'sslverify' => true,
'stream' => false,
'filename' => null
) );
$red=$remote_get['body'];
$res=json_decode($red,true);
//pre($res);
//echo '<hr>';
//pre($res);
$ans=array();
$answers['total']=0;
$cits=array('Москва','Санкт-Петербург');
foreach($res['response']['GeoObjectCollection']['featureMember'] as $bin){
//pre($bin);
//echo '<hr>';
$components=$bin['GeoObject']['metaDataProperty']['GeocoderMetaData']['Address']['Components'];
$addr=$bin['GeoObject']['metaDataProperty']['GeocoderMetaData']['Address']['formatted'];
$coords=$bin['GeoObject']['Point']['pos'];
//pre($ni);
$mydata=array();
$mydata['country']='';
$mydata['province']='';
$mydata['locality']='';
$mydata['type']=$bin['GeoObject']['metaDataProperty']['GeocoderMetaData']['kind'];
foreach($components as $comp){
//pre($comp);
if($comp['kind']=='country'){
$mydata['country']=$comp['name'];
}
if($comp['kind']=='province'){
$mydata['province']=$comp['name'];
}
if($comp['kind']=='locality'){
$mydata['locality']=$comp['name'];
}
if($comp['kind']=='house'){
$mydata['house']=$comp['name'];
}
$mydata['formated']=$addr;
$mydata['coords']=$coords;
}
//pre($mydata);
if(mb_strlen($mydata['locality'])>0 || in_array($mydata['province'], $cits)){
if(in_array($mydata['province'], $cits))$mydata['locality']=$mydata['province'];
$ans[]=$mydata;
}
$answers['total']=count($ans);
$answers['result']=$ans[0];
}
$coords=$res['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']['Point']['pos'];
if($coords)
{
$ex=explode(' ', $coords);
$long=$ex[0];
$lat=$ex[1];
$mydata['latitude']=$lat;
$mydata['longitude']=$long;
$answers['latitude']=$lat;
$answers['longitude']=$long;
}
$answers['formated']=$addr;
$answers['adres']=$adress;
return $answers;
die();
if(isset($res['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']['metaDataProperty']['GeocoderMetaData']['Address']['formatted'])){
//pre($res['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']['metaDataProperty']['GeocoderMetaData']['Address']['Components']);
$c=array();
//pre($res['response']);
$c['formatted']=$res['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']['metaDataProperty']['GeocoderMetaData']['Address']['formatted'];
$short=str_replace('Россия, ', '', $res['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']['metaDataProperty']['GeocoderMetaData']['Address']['formatted']);
$c['short']=$short;
//$c['url']=$short;
$check_key=$res['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']['metaDataProperty']['GeocoderMetaData']['Address']['formatted'];
$data=array();
$data['formatted']=$res['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']['metaDataProperty']['GeocoderMetaData']['Address']['formatted'];
$data['short']=$short;
$data['url']= $short ;
$data['postal_code']=0;
$c['postal_code']=0;
if(isset($res['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']['metaDataProperty']['GeocoderMetaData']['Address']['postal_code'])){
$data['postal_code']=$res['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']['metaDataProperty']['GeocoderMetaData']['Address']['postal_code'];
$c['postal_code']=$res['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']['metaDataProperty']['GeocoderMetaData']['Address']['postal_code'];
}
$components=$res['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']['metaDataProperty']['GeocoderMetaData']['Address']['Components'];
foreach($components as $key=>$value)
{
$c[$value['kind']][]=$value['name'];
}
foreach($c as $ke=>$val)
{
if($ke=='house')$data['house']=$val[0];
if($ke=='street')$data['street']=$val[0];
if($ke=='locality')$data['locality']=$val[0];
if($ke=='country')$data['country']=$val[0];
if($ke=='area'){
$i=1;
foreach($val as $v){
$data['area_'.$i]=$v;
$i++;
}
}
if($ke=='province'){
$i=1;
foreach($val as $v){
$data['province_'.$i]=$v;
$i++;
}
}
if($ke=='district'){
$i=1;
foreach($val as $v){
$data['district_'.$i]=$v;
$i++;
}
}
//форматируем улицы
if($ke=='street')
{
$a = $val[0];
if (strpos($a, ' улица') !== false) {
$tr=str_replace(' улица', '', $val[0]);
$data['street_clean']=$tr;
$data['street_type']='улица';
}
elseif (strpos($a, 'улица ') !== false) {
$tr=str_replace('улица ', '', $val[0]);
$data['street_clean']=$tr;
$data['street_type']='улица';
}
elseif (strpos($a, ' проспект') !== false) {
$tr=str_replace(' проспект', '', $val[0]);
$data['street_clean']=$tr;
$data['street_type']='проспект';
}
elseif (strpos($a, 'проспект ') !== false) {
$tr=str_replace('проспект ', '', $val[0]);
$data['street_clean']=$tr;
$data['street_type']='проспект';
}
elseif (strpos($a, ' шоссе') !== false) {
$tr=str_replace(' шоссе', '', $val[0]);
$data['street_clean']=$tr;
$data['street_type']='шоссе';
}
elseif (strpos($a, 'шоссе ') !== false) {
$tr=str_replace('шоссе ', '', $val[0]);
$data['street_clean']=$tr;
$data['street_type']='шоссе';
}
elseif (strpos($a, ' переулок') !== false) {
$tr=str_replace(' переулок', '', $val[0]);
$data['street_clean']=$tr;
$data['street_type']='переулок';
}
elseif (strpos($a, 'переулок ') !== false) {
$tr=str_replace('переулок ', '', $val[0]);
$data['street_clean']=$tr;
$data['street_type']='переулок';
}
else{
$data['street_clean']=$a;
$data['street_type']='улица';
}
}
//форматируем город
if($ke=='locality'){
$a = $val[0];
if (strpos($a, ' село') !== false) {
$tr=str_replace(' село', '', $val[0]);
$data['locality_clean']=$tr;
$data['locality_type']='село';
}
elseif (strpos($a, 'село ') !== false) {
$tr=str_replace('село ', '', $val[0]);
$data['locality_clean']=$tr;
$data['locality_type']='село';
}
elseif (strpos($a, ' деревня') !== false) {
$tr=str_replace(' деревня', '', $val[0]);
$data['locality_clean']=$tr;
$data['locality_type']='деревня';
}
elseif (strpos($a, 'деревня ') !== false) {
$tr=str_replace('деревня ', '', $val[0]);
$data['locality_clean']=$tr;
$data['locality_type']='деревня';
}
elseif (strpos($a, ' посёлок городского типа') !== false) {
$tr=str_replace(' посёлок городского типа', '', $val[0]);
$data['locality_clean']=$tr;
$data['locality_type']='посёлок городского типа';
}
elseif (strpos($a, 'посёлок городского типа ') !== false) {
$tr=str_replace('посёлок городского типа ', '', $val[0]);
$data['locality_clean']=$tr;
$data['locality_type']='посёлок городского типа';
}
else{
$data['locality_clean']=$a;
$data['locality_type']='город';
}
$data['locality_clean_lat']=$data['locality_clean'];
}
}
//$res['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']['metaDataProperty']['GeocoderMetaData']['Address']['formatted']
//$res['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']['metaDataProperty']['GeocoderMetaData']['Address']['postal_code']
//['[Address']['Components']
//$coords=$res['response']['featureMember'][0]['GeoObject']['metaDataProperty']['GeocoderMetaData']
$coords=$res['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']['Point']['pos'];
if($coords)
{
$ex=explode(' ', $coords);
$long=$ex[0];
$lat=$ex[1];
$data['latitude']=$lat;
$data['longitude']=$long;
}
$data['result']=1;
$data['primary address']=$check_key;
}
else{
$data['result']=0;
$data['primary address']=$adress;
}
// pre($data);
return $data;
}
?>