2010年12月15日

geoプラグインメモ

お願いします♪いいねとかつぶやいたりして下さい
 
ユーザーモデルに Girlモデルをアソシエーションさせて、
セッションに格納させてある lat , lng 情報を元に近いユーザーを捜したい。

http://www.exgear.jp/blog/2010/09/geo_simple_plugin/

ただ、なぜかうまく動かない。
検索文がおかしいみたいだ。

ということで、paginator で お近くのユーザーとして
/girls/show/page~1/sort~User.lat-lng/direction~desc/

のURLがリクエストされてきたときにそのユーザーの近い順に並び変える方法をメモ。

コツは、最初にpaginatorの条件を全て設定して、さらに最後にpaginateに geo 情報を格納すると
うまく検索できるようになる。

$this->User = Classregistry::init('User');
$this->User->bindModel(array('hasOne' => array('Girl')));		
$this->User->recursive = 2;

$this->paginate['User'] = 
    array(
        'conditions' => array('Girl.hasphoto' => 1 , 'User.agecheck' => 1),
        'limit' => 20,
        'order' => array('User.modified desc'),
        'contain' => array(
            'Girl' => array(
                        'fields' => array('user_id','price')
                        ),
            'Attachment' => array(
                'fields' => array(
                            'id',
                            'basename'
                        ),
                        'order' => 'id desc',
                        'limit' => 1
            )
        )				
);

if(preg_match('/lat-lng/',$this->params['url']['url'])){
    
    $options['geo']['lat'] = u('lat');//ログインユーザーの lat 情報
    $options['geo']['lng'] = u('lng');//ログインユーザーの lng 情報
    
    $options['geo']['distance'] = 100; // 半径20Km以内
    $geo = $this->User->geoFindOptions($options);
    $this->paginate['User']['geo'] = $geo['geo'];
    $this->paginate['User']['order'] = $geo['order'];
}

$res = $this->paginate('User');
関連するタグ: PHP cakephp
あなたにとって有用な記事でしたか?是非ブックマークしておくことをおすすめします。
 




ライブラリを配布しちゃったり
webデザイン
Fireworks
HTMLコーディング
CSS
Dreamweaver
携帯サイト
webプログラム
PHP
正規表現
cakephp
MYSQL
javascript
webマーケティング
adwords
analytics
windows7
ショートカットキー
おすすめ情報
サイト
facebook
ライブラリ
配布
アプリ
iphone
ipad
サーバー
さくらサーバー
全ての記事を読む




トップ - 最新の記事一覧 - お問い合わせ