[英]How to quickly determine if multiple places are within users vicinity - Google Places API
我正在設計一個Web應用程序,需要確定數據庫中列出的哪些位置在用戶駕車距離內。
這是我當前正在使用的過程的大致概述-
當我在少數幾個地方運行時,此過程可以正常工作,但在100個地方運行會很慢,並且會進行100次api調用。 鑒於Google當前每天限制100,000個通話,這可能會成為一個難題。
因此,是否有更好的方法來確定數據庫中哪些位置在用戶駕車距離內? 我不想跟蹤數據庫中的地址,因此我想依靠Google。
謝謝。
您可以使用此處找到的公式來計算郵政編碼之間的距離:
http://support.sas.com/kb/5/325.html
這是不精確的(從門到門),但是您可以計算從用戶的郵政編碼到位置的郵政編碼的距離。
使用這種方法,您甚至不必使用Google的API。
我對你有一個非常規的想法。 當您第一次考慮它時,這將非常非常奇怪,因為它的執行順序與您期望的相反 。 但是,您可能會看到邏輯。
為了將其付諸實踐,您需要用戶希望看到的各種內容。 例如,我要去“超市”。
作為google地方的一部分,有一個很棒的API,名為附近搜索。 它的真正奇跡是允許您按距離對地點進行排名。 我們將利用這一點。
當您獲得用戶的位置時,查詢附近搜索您的類別,並在具有以下約束的情況下循環搜索結果:
完成請求后,您將獲得從未出現在結果中的ID。 計算Google數據中最遠結果的點對點距離,您到點的最大距離。 如果這個值太小,請使用我在此介紹的技術進行復合搜索。
唯一的要求是: 您需要大致了解要搜索的內容 。 但是,請考慮以下因素:您的正常查詢周期會帶您1到100個Google查詢之間的任意位置。 對於50公里半徑,我的方法需要1。 :-)
要計算距離,順便說一句,您將需要Haversine的公式,而不是進行郵政編碼查找。 這具有真正國際化的額外優勢。
這種搜索方法直接取決於您所知道的位置和距離之間的權衡。 如果您正在尋找半徑小於10公里的半徑,請使用此方法僅生成一個請求。
但是,如果您必須進行復合搜索,請記住,每個請求周期將花費3N,其中N是上一個周期生成的查詢數。 因此,如果您在100公里半徑內只有3個位置,則更有意義的是分別查找每個位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.