我是iOS上的一個應用程序,它具有Trip Planner。 例如,我使用google方向API獲取從紐約到波士頓的路線。 我有50個不同的緯度經度在地圖上製作折線。 之後,我需要獲得這條路線上的地點,我可以在去波士頓的途中參觀。如何通過lat long來實現高效的多搜索點
谷歌路線API給我:
latitude = "30.308399"; longitude = "-89.748299";
latitude = "30.310930"; longitude = "-89.818604";
latitude = "30.350050"; longitude = "-89.916054";
latitude = "30.432850"; longitude = "-90.098549";
....
現在每一點我做搜索的MySQL數據庫得到最接近的地方:
選擇 ID,標題,TYPE_ID,service_id爲,北緯,經度,州,城市,郵編,地址, (3959 * ACOS(COS(弧度(31.72723))* COS(弧度(緯度))* COS(弧度(經度) - 弧度(-106.3047))+罪( 弧度(31.72723))* sin(弧度(緯度))) )作爲一個距離ASC限額由 地方距離< = 10階距離10
但是,如果從紐約到舊金山的這次旅行中,我將有800分,我會做800查詢數據庫,需要更多的總共超過2秒。我有7個不同的表,這將是14秒。
什麼是最好的,如果做的?
數據庫內多少點?在總 – 2013-02-20 06:39:24
7表有80K地方 – 2013-02-20 06:40:06
你需要做的地方在DB更organized..may是通過運行K-均值聚類和將它們分成不同clusters..then而不是搜索每個可以通過每個羣集搜索的地方..大小的集羣..應該取決於水平的縮放.. – Shivam 2013-02-20 06:52:51