//$params['NEW_VALUE']
//$params['SOURCE']
$lat = substr($params['NEW_VALUE'], 0, strpos($params['NEW_VALUE'], ',')); // широта
$lon = substr($params['NEW_VALUE'], strpos($params['NEW_VALUE'], ',') + 1); // долгота
if($this->getProperty('HomeDistance') > 75) { // дистанция от дома
if($res = $this->getProperty('seenAt')) { // наличие имени установленной локации
$this->setProperty('Location', $res);
} else {
$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'};
$res = str_replace('Свердловская область, ', '', $res);
$this->setProperty('Location', $res);
}
} else {
$this->setProperty('Location', 'Дом');
//Установим флаг "дома"
if ($this->getProperty('gps') == 0) {
$this->setProperty('gps', 1, 0, array('SOURCE'=>$params['SOURCE']));
}
/*
//Сброс собрался домой
if ($this->getProperty('isGoingHome')) {
$this->setProperty('isGoingHome', 0);
}
*/
//Сброс присутствия
$ot = $params['ORIGINAL_OBJECT_TITLE'];
setTimeOut($ot . '_gps', "setGlobal('" . $ot . ".gps', 0);", 600);
}
да, в самом начале вполне уместно поставить паузу
что б модуль успел все свойства записать
sleep(1);
надо, наверное, подписать, что ещё геокодирование можно получать из модуля google_location. при его использовании адрес из модуля передается в свойство юзера seenAt
ПРЕДУПРЕЖДЕНИЕ!
при настройке вызова метода при смене координат может быть превышен порог частоты запросов к серверу геолокации, яндекс меня, оказывается, банил на 4 часа((
Посмотрел первый пост и понял что нужно еще дополнить отклонением от базовой точки (точки последних координат), а то в зданиях часто отражение сигнала идет и прыгает. Если меньше 100 метров, то не обновлять адрес. Будет время займусь
И к первому посту еще бы вызов из метода как реализован? ко всем постам Спасибо за ваше активное участие
вместо параметра, сделай свою переменную и значение читай из свойства, а метод привяжи к дистанции
тогда саму дистанцию можно из параметра
тут масса вариантов, можно и все геокодеры сразу сюда и т.д.
это ж писал к обсуждению в курилке и еще не описал проверку на пустое
соурсе в свойство без массива и это если жпс.пхп правлен, так просто выкинуть
$res = str_replace('Свердловская область, ', '', $res);
$this->setProperty('Location', $res);
Здесь у Logrus область указана для сокращения? У меня в таком виде даже полностью пишет и Россия и область и т.д. имею ввиду не понятно где должно быть ('Свердловская область, '?
Хочу сократить надпись, вся не влезает. думаю убрать {'Country'} а там посмотрим.
страну уберете не будет работать
а сократить надпись вырезанием, пример в первой строке, вместо моего скопируйте что вам нужно сократить
таких строк можно несколько
$res = str_replace('Россия, ', '', $res);
$res = str_replace('ВАША область, ', '', $res);
в скобках три параметра первый вырезаемое, второй на что меняем первый, третий переменная с этой строкой
Да, уже понял когда убрал страну ))
А за подсказку с примером спасибо!!!
Please login to leave comments. Join us!