Руслан Бег dan repost
Действуя по инструкции с форума https://mjdm.ru/forum/viewtopic.php?f=4&t=1858
Для тех у кого заблочен или "религиозных" противников Яндекса имеется вариант с Google.
После добавления Гуглом необходимости ввода АПИ ключа он перестал работать.
Код не мой, просто правлен или доработан
Вариантов на данный момент 2 json и xml поправим их и вернем к жизни
вариант json предусматривает правку только функции
(не проверял правильность постановки переменных в URL, возможно нужно будет поменять местами, в xml поменял так как не верно выводил место)
// Функция определения адреса по координатам
function Getgeocode($lat, $lon) {
$URL = "https://maps.googleapis.com/maps/api/geocode/json?latlng=$lat,$lon&sensor=false&language=ru&key=ТУТ_ДОЛЖЕН_БЫТЬ_ВАШ_КЛЮЧ_АПИ";
$data = getUrl( $URL );
$json = json_decode( $data );
$res = $json->results[0]->formatted_address;
return $res;
}
Теперь к варианту с xml
Тут еще два варианта: правка только функции и с правкой еще и метода
С правкой метода сокращаем код и время на доли секунд
С правкой метода
function Getgeocode($Coordinates) {
$data_file="https://maps.googleapis.com/maps/api/geocode/xml?latlng=".$Coordinates."&key=ТУТ_ДОЛЖЕН_БЫТЬ_ВАШ_КЛЮЧ_АПИ&language=ru";
$xml = simplexml_load_file($data_file);
$res=$xml->result[0]->formatted_address;
return $res;
}
Метод в таком варианте выглядеть станет так
$Coordinates=$this->getProperty("Coordinates");
$this->setProperty("Location",Getgeocode($Coordinates));
Без правки метода
function Getgeocode(($lat, $lon)) {
$data_file="https://maps.googleapis.com/maps/api/geocode/xml?latlng=$lon,$lat&key=ТУТ_ДОЛЖЕН_БЫТЬ_ВАШ_КЛЮЧ_АПИ&language=ru";
$xml = simplexml_load_file($data_file);
$res=$xml->result[0]->formatted_address;
return $res;
}
На случай потери ветки
Создаем метод
SetLocation
$Coordinates=$this->getProperty("Coordinates");
$lat=substr($Coordinates,0,strpos($Coordinates,","));
$lon=substr($Coordinates,strpos($Coordinates,",")+1);
$this->setProperty("Location",Getgeocode($lon,$lat));
Создаем свойство
Location
Метод привязваем на изменение координатам
Идем в файл своих функций и вставляем
function Getgeocode($lon, $lat) {
$data_file="http://geocode-maps.yandex.ru/1.x/?geocode=E".$lon.",N".$lat;
$xml = simplexml_load_file($data_file);
$res=$xml->{'GeoObjectCollection'}->{'featureMember'}[0]->{'GeoObject'}->{'metaDataProperty'}->{'GeocoderMetaData'}->{'AddressDetails'}->{'Country'}->{'AddressLine'};
return $res;
}
В конце файла должна быть пустая строка
При изменении координат запускается метод и вызывает функцию и возвращает адрес
#координаты #GPS #Гугл #Google #Геокодинг #Geocoding #Coordinates
Для тех у кого заблочен или "религиозных" противников Яндекса имеется вариант с Google.
После добавления Гуглом необходимости ввода АПИ ключа он перестал работать.
Код не мой, просто правлен или доработан
Вариантов на данный момент 2 json и xml поправим их и вернем к жизни
вариант json предусматривает правку только функции
(не проверял правильность постановки переменных в URL, возможно нужно будет поменять местами, в xml поменял так как не верно выводил место)
// Функция определения адреса по координатам
function Getgeocode($lat, $lon) {
$URL = "https://maps.googleapis.com/maps/api/geocode/json?latlng=$lat,$lon&sensor=false&language=ru&key=ТУТ_ДОЛЖЕН_БЫТЬ_ВАШ_КЛЮЧ_АПИ";
$data = getUrl( $URL );
$json = json_decode( $data );
$res = $json->results[0]->formatted_address;
return $res;
}
Теперь к варианту с xml
Тут еще два варианта: правка только функции и с правкой еще и метода
С правкой метода сокращаем код и время на доли секунд
С правкой метода
function Getgeocode($Coordinates) {
$data_file="https://maps.googleapis.com/maps/api/geocode/xml?latlng=".$Coordinates."&key=ТУТ_ДОЛЖЕН_БЫТЬ_ВАШ_КЛЮЧ_АПИ&language=ru";
$xml = simplexml_load_file($data_file);
$res=$xml->result[0]->formatted_address;
return $res;
}
Метод в таком варианте выглядеть станет так
$Coordinates=$this->getProperty("Coordinates");
$this->setProperty("Location",Getgeocode($Coordinates));
Без правки метода
function Getgeocode(($lat, $lon)) {
$data_file="https://maps.googleapis.com/maps/api/geocode/xml?latlng=$lon,$lat&key=ТУТ_ДОЛЖЕН_БЫТЬ_ВАШ_КЛЮЧ_АПИ&language=ru";
$xml = simplexml_load_file($data_file);
$res=$xml->result[0]->formatted_address;
return $res;
}
На случай потери ветки
Создаем метод
SetLocation
$Coordinates=$this->getProperty("Coordinates");
$lat=substr($Coordinates,0,strpos($Coordinates,","));
$lon=substr($Coordinates,strpos($Coordinates,",")+1);
$this->setProperty("Location",Getgeocode($lon,$lat));
Создаем свойство
Location
Метод привязваем на изменение координатам
Идем в файл своих функций и вставляем
function Getgeocode($lon, $lat) {
$data_file="http://geocode-maps.yandex.ru/1.x/?geocode=E".$lon.",N".$lat;
$xml = simplexml_load_file($data_file);
$res=$xml->{'GeoObjectCollection'}->{'featureMember'}[0]->{'GeoObject'}->{'metaDataProperty'}->{'GeocoderMetaData'}->{'AddressDetails'}->{'Country'}->{'AddressLine'};
return $res;
}
В конце файла должна быть пустая строка
При изменении координат запускается метод и вызывает функцию и возвращает адрес
#координаты #GPS #Гугл #Google #Геокодинг #Geocoding #Coordinates