2011-11-28 2 views
2

나는 this tutorial을 팔로우하고 있습니다. 기본적으로 나는 가지고있는 테이블에서 주소를 가져 와서 해당 주소를 Google지도에 배치하려고합니다. 이 튜토리얼은 꽤 똑바로 보이고, 테이블 장소를 만들고, 행동을 모델링하고, 모델을 만들지 않습니다.Cakephp 지오 코딩 동작

실제로 기존 테이블과 함께 사용하는 방법을 혼란스럽게합니다. 나는 행동에 관한 요리 책의 섹션을 읽었지만, 아직도 그들에 대해 조금 혼란 스럽다. 대부분 내가이 튜토리얼을 어떻게 다른 뷰와 컨트롤러로 통합 할 것인가?

답변

2

먼저는 ... 위도/경도 주소 테이블에 좌표를 추가 할 필요가

당신이 할 수있는이 구글지도 API 호출 주위에 쓰기 파서 : 한 번

http://maps.google.com/maps/api/geocode/xml?address=miami&sensor=false

당신의 주소는 좌표가 포함되어 있습니다. 좌표 만 입력하면 을 자바 스크립트 google maps에 전달하고 소스를 복사하면됩니다.

"케이크 지오"

GeoShell.php : 여기

0 실행 위도/경도 데이터

를 제작하는 CakePHP는 2.0 셸

<?php 
class GeoShell extends Shell { 

public $uses = array('Business'); 

public function main() { 



    $counter = 0; 
    $unique = 0; 


    $temps = $this->Business->find('all', array(
     'limit' => 100 
    )); 

    foreach($temps as $t) { 

      $address = $this->geocodeAddress($t['Business']['address']); 

      print_r($address); 

      if(!empty($address)) { 
       $data['Business']['id'] = $t['Business']['id']; 
       $data['Business']['lat'] = $address['latitude']; 
       $data['Business']['lng'] = $address['longitude']; 

       $this->Business->save($data, false); 
       $unique++; 
      } 

    } 

    $counter++; 


    $this->out(' - Processed Records: ' . $counter . ' - '); 
    $this->out(' - Inserted Records: ' . $unique . ' - '); 

} 


public function geocodeAddress($address) { 

    $url = 'http://maps.google.com/maps/api/geocode/json?address=' . urlencode($address) . '&sensor=false'; 

    $response = @file_get_contents($url); 

    if($response === false) { 
     return false; 
    } 

    $response = json_decode($response); 

    if($response->status != 'OK') { 
     return false; 
    } 

    foreach ($response->results['0']->address_components as $data) { 
     if($data->types['0'] == 'country') { 
      $country = $data->long_name; 
      $country_code = $data->short_name; 
     } 
    } 

    $result = array(
     'latitude' => $response->results['0']->geometry->location->lat, 
     'longitude' => $response->results['0']->geometry->location->lng, 
     'country' => $country, 
     'country_code' => $country_code, 
     'googleaddress' => $response->results['0']->formatted_address, 
    ); 
    return $result; 
} 

을}