0

次の例があります: http://dev.driz.co.uk/googlemap/これは、CakePHP で構築しているアプリのマッピング機能を表します (この例では Cake を使用していないことに注意してください)。

JSON を使用して、Google マップにいくつかのマーカーを設定し、Geolocation を使用してマップを現在地の中心に配置しています。これにより、基本的に周囲の投稿が表示されます。そのため、実際のアプリでは、JSON ファイルはデータベースから Cake を使用して動的に構築されます。

私がやりたいのは、あなたの場所 (ユーザー) の座標を使用してデータベースにクエリを実行し、それらの座標から半径 10 マイル以内にある投稿を見つけることです。そして、たとえば 10 個の投稿を引き出します...次に、マップをドラッグして、半径を広げたときにさらに多くの投稿をロードできるようにしたいと考えています。問題は、座標/半径 10 マイルを CakePHP に渡して、DB 内の投稿を照会する方法です!

これの例はありますか?また、そのようなクエリの作成を開始するのに役立つコード サンプルを誰かが投稿できますか? データベースから 10 件の投稿を取得するためのクエリが用意されていますが、座標に基づいて投稿が検索されません。一連の座標に対して設定された半径 10 マイル以内でそれを行うにはどうすればよいですか?

クエリの例は次のとおりです。

public function gMapTest() {

        $posts = $this->Post->find('all', array('limit'=>10,'conditions'=>array('Post.status'=>array(1,2)),'order'=>array('Post.datetime'=>'desc'),
        'contain'=>array('User'=>'Profile'))); 

        $this->set('posts',$posts);

        $this->set('_serialize', 'posts');
    }
4

1 に答える 1

0

モデルで Geocoder の動作を使用します。

$this->Post->Behaviors->attach('Tools.Geocoder');
$this->Post->setDistanceAsVirtualField($lat, $lng);
$options = array('order' => array('Post.distance' => 'ASC'), 'limit' => 10);
$posts = $this->Post->find('all', $options);

http://www.dereuromark.de/2012/06/12/geocoding-with-cakephp/

于 2012-09-14T08:58:49.047 に答える