其實我有上百萬的人記錄在我的服務器數據庫中的所有位置,我想獲取這些人誰靠近我(我的意思是,用5方圓百里的圓圈)5-英里的數據。 ..查找就近我的GPS定位
我公司通過Web服務發送這個數據到iPhone ...
請告訴我如何做到這一點我的PHP服務器....在
其實我有上百萬的人記錄在我的服務器數據庫中的所有位置,我想獲取這些人誰靠近我(我的意思是,用5方圓百里的圓圈)5-英里的數據。 ..查找就近我的GPS定位
我公司通過Web服務發送這個數據到iPhone ...
請告訴我如何做到這一點我的PHP服務器....在
也許這可以幫助你
例如,您輸入緯度和經度37和-122度。而且您希望在當前給定的經緯度範圍內搜索25英里範圍內的用戶。
SELECT item1, item2,
(3959 * acos(cos(radians(37))
* cos(radians(lat))
* cos(radians(lng)
- radians(-122))
+ sin(radians(37))
* sin(radians(lat))
)
) AS distance
FROM geocodeTable
HAVING distance < 25
ORDER BY distance LIMIT 0 , 20;
如果您希望以kms爲單位的搜索距離。然後在上面的查詢中用6371代替3959。
太棒了。在第一次嘗試中就可以使用我的數據庫表。大+1!謝謝! – hellozimi 2011-03-01 10:36:19
+1感謝這真的非常有幫助...... – 2011-03-01 13:40:57
數以百萬計的人記錄服務器數據庫(我希望你遵守數據保護法),那麼你就需要減少計算所有這些距離的工作量;否則你需要爲數百萬條記錄中的每一條記錄進行計算。
使用PHP來計算「邊界框」,它可以用來從您的數百萬人記錄的選擇可能的候選人的一個子集,則僅計算人的記錄子集的距離。見this article從活動類型的網站用於描述如何做到這一點例如PHP代碼,和方法如何實際工作的精彩描述。
+1謝謝....... – 2011-03-01 13:40:28
這是一個有點複雜,無需額外的信息來回答。你到現在爲止嘗試過什麼,你的問題在哪裏?數據庫中的數據是怎樣的?你想知道如何建立這個Web服務或只是如何編寫SQL查詢? – oezi 2011-03-01 09:46:30
@oezi -----我的數據庫擁有者的姓名,地址,郵編,姓名...等等,我想獲得GPS的基礎上,充分詳細座標通過iPhone發送...... – 2011-03-01 09:57:16
如果你不「T有經/緯你的個人表,那麼你就需要轉換成zip包LAT /很久以前就可以計算出任何距離 – 2011-03-01 10:07:22