0

我有以下示例:http ://dev.driz.co.uk/googlemap/表示我在 CakePHP 中构建的应用程序的映射功能(请注意,此示例未使用 Cake)。

使用 JSON,我使用一些标记填充 Google 地图,并使用 Geolocation 将地图置于您所在位置的中心,这样您就可以看到您周围的帖子。因此,在现实生活中的应用程序中,JSON 文件将使用数据库中的 Cake 动态构建。

我想要做的是使用您所在位置的坐标(用户)查询数据库以查找在这些坐标的 10 英里半径内的帖子。然后拉出 10 个帖子...然后我想这样做,以便您可以拖动地图并在您扩大半径时加载更多帖子,如果这有意义的话。问题是如何将坐标/10 英里半径传回 CakePHP 以查询数据库中的帖子!

有这方面的例子吗?有人可以发布一些代码示例来帮助我开始构建这样的查询吗?我有一个查询可以从数据库中提取 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

在您的模型上使用地理编码器行为:

$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 回答