2012-09-13 65 views
0

我有以下示例:http://dev.driz.co.uk/googlemap/表示我在CakePHP中構建的應用程序的映射功能(請注意,此示例不使用Cake)。使用CakePHP查詢座標數據庫以返回Google地圖的JSON

使用JSON,我使用一些標記填充Google地圖,還使用地理位置將地圖居中放置在您的位置上,從而可以看到您周圍的帖子。所以在現實生活中,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'); 
    } 
+0

您的問題沒有得到正確設置。從其中一個答案的評論中,問題似乎是從CakePHP數據庫發送和返回數據。您應該使用AJAX來執行此操作。有許多教程。就我個人而言,我會使用JQuery來查看http://idhana.com/2009/03/29/ajax-in-cakephp-with-jquery/ –

+0

**我知道如何在CakePHP中使用AJAX。我在我的應用程序中使用它。**我不知道的是如何向我的數據庫發送一些座標,並將10個半徑在10英里範圍內的帖子返回到這些座標,因爲它不是一個簡單的查找語句。 – Cameron

+0

找不到它你需要使用查詢。使用Haversine公式查看我的答案。由於我只使用PHP,我不能確認Sanitize函數。見http://daviestrachan.zxq.net/maps/stationmap8.php使用此功能查看英國火車站 –

回答

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/

+0

如何將Google Map中的座標傳遞給控制器​​?然後再傳遞迴應? – Cameron

+0

我以爲你想找個(全部)電話?那麼您應該在保存調用之前對您的記錄進行地理編碼(使用行爲)。通過這種方式,您可以將這些座標保存在這些記錄(lat/lng字段)中,並且可以通過find輕鬆找回它們。 – mark

+0

數據庫中的所有記錄都已經用座標進行了地理編碼,因爲這些帖子有兩列經緯度。問題是能夠搜索這些記錄來查找用戶位置附近的地方。 – Cameron

相關問題