我在尋找某個城市搜索地點的最佳解決方案。此外,我需要找到可能接近的地點,因爲有時我們無法在一個小城市找到地點,但5公里以外的地方可能是一個擁有一些地點的更大的城市。但它總是不同的價值,所以我無法想象我怎麼能知道搜索的最大距離。按城市查找地點的最佳做法
我有三個表:
countries
:
id|code|name
cities
:
id|lat|lng|southwestLat|southwestLng|northeastLat|northeastLng|countryId|name
locations
:
id|lat|lng|cityId|name
我有三個想法:
select * from locations where cityId = :myCityId
,不靈活的解決方案,因爲這「5公里」- 搜索通過的交叉點與橢圓或矩形的
cities.lat
和cities.lng
爲中心,southwestLat - northeastLat
和southwestLng - northeastLng
爲直徑或高度,但它也不是一個靈活的解決方案,因爲我們可以有一些城市將會接近,但不會在t他的範圍,否則這個範圍可能包括不必要的城市 - 得到一個城市多邊形(通過谷歌地圖api等),只在城市搜索,但它與變種1相同,生產力較低。
此外,我可以添加一些距離來增加多邊形/橢圓/矩形的大小。但是,哪個距離?
您對此有何看法? 你有同樣的情況嗎? 你做了什麼來解決它?
預先感謝您!
更新1:,因爲這個問題有關半徑快速搜索,但我正在尋找,而不是一些半徑由城市最好的靈活的搜索解決方案,它不涉及到Whats the fastest way to lookup big tables for points within radius MySQL (latitude longitude)。
可能的重複[什麼是在半徑MySQL(緯度經度)]內查找大表的最快方法](http://stackoverflow.com/questions/38548473/whats-the-fastest-way-to-lookup- big-tables-for-points-within-radius-mysql-latit) – e4c5
@ e4c5它只是在半徑範圍內搜索,我的問題更復雜,它並不強迫我選擇這個解決方案 –