Определение координат по адресу


Координаты по адресу

Для определения координат используется сервис геокодирования google/geocode.

Для типа узла, в программе при сохранении записывается код, который вычисляет координаты и записывает их в поле объекта. В примере предполагается, что Адрес хранится в первом строковом поле (STR1), а результат записывается во второе строковое поле (STR2). Код срабатывает только при изменении адреса.

if ($this->gf('STR1') && ($this->gf('STR1')!=$this->gf('STR1',2)) )
{   
    $curl = curl_init();
    $st = iconv("WINDOWS-1251","UTF-8",$this->gf('STR1'));
    $ss = 'http://maps.googleapis.com/maps/api/geocode/json?address='.urlencode(trim($st)).'&sensor=false&language=ru';
    curl_setopt($curl, CURLOPT_URL, $ss);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 2);
    curl_setopt($curl, CURLOPT_USERAGENT, 'Opera 10.00'); 
    $jsona = curl_exec($curl);
    curl_close($curl);
    $json = (json_decode($jsona,true));
    if ($json['status']=='OK') 
      $this->sf('STR2',$json['results'][0]['geometry']['location']['lat'].','.$json['results'][0]['geometry']['location']['lng']);
}