Действуя по инструкции с форума 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;
}
Тут еще два варианта: правка только функции и с правкой еще и метода
С правкой метода сокращаем код и время на доли секунд
С правкой метода
Код: Выделить всё
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));
Метод привязваем на изменение координатам
Идем в файл своих функций и вставляем
Код: Выделить всё
function Getgeocode($lon, $lat) {
$api='ВАШ_АПИ';
$data_file="http://geocode-maps.yandex.ru/1.x/?apikey=".$api."&geocode=".$lon.",".$lat;
$xml = simplexml_load_file($data_file);
$res=$xml->{'GeoObjectCollection'}->{'featureMember'}[0]->{'GeoObject'}->{'metaDataProperty'}->{'GeocoderMetaData'}->{'AddressDetails'}->{'Country'}->{'AddressLine'};
return $res;
}
При изменении координат запускается метод и вызывает функцию и возвращает адрес