簡體   English   中英

如何實施“在X英里內搜索”

[英]How to implement a “search within X amount of miles”

這不是我遇到的技術問題,但是沒有人知道如何實施“在城市8英里范圍內進行搜索”

我在自動交易器網站上看起來像搜索

是否有執行此操作的在線服務(可能是Google Maps API?),或者通常由開發人員構建。

這是我為實現此目的而采取的步驟:

假設您允許用戶搜索8英里以內的城市,則匹配表A中的記錄,該表也有一個地址或城市字段。

  1. 第1步:將新記錄添加到表A(以后將用於搜索時)時,您可以通過Google Map API在該表的每一行中保存該地址或城市的緯度/經度。

  2. 第2步:當用戶輸入city關鍵字時,再次使用Google Map API來獲取搜索關鍵字city的緯度經度。

  3. 步驟3:使用關鍵字lat / long來匹配表記錄lat / long,使用帶有Harvensine Formula的查詢並帶有“ having”語句來獲取必要的記錄。

公式和有關如何執行此操作的mysql查詢在此處進行了很好的描述
此Google文檔中使用的Google Map API

但是要注意的一件事是,假設您輸入一個城市名稱,例如“ Los Angeles”。 假設洛杉磯是地圖上的“點”是不正確的……它是一個有形狀的城市。 因此,假設您說在洛杉磯5英里范圍內的所有結果...這個問題是模棱兩可的,因為有人可能會問-洛杉磯的哪一端? 因此,Google API將針對同一城市返回多組坐標,以定義位置的邊界折線。 如果您確實希望結果是准確的,則不要僅僅考慮距中心5英里,也要考慮其他坐標,然后使用結果的並集。

如果您要在某個位置的X英里內尋找Google地圖上的位置類型,可以https://developers.google.com/places/documentation/?hl=fr&csw=1#PlaceSearches進行操作

如果要從某個位置的X英里范圍內的一組特定位置(例如數據庫中的位置)中查找位置,則必須自己執行一些操作。 使用Google地圖獲取每個位置的經度和緯度,然后使用類似http://www.movable-type.co.uk/scripts/latlong.html的公式來計算距離,然后僅顯示在您想要的距離。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM