【发布时间】:2016-08-18 11:39:24
【问题描述】:
我正在寻找按某个城市搜索位置的最佳解决方案。我还需要找到可能在附近的位置,因为有时我们在小城市找不到位置,但 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为直径或高度的矩形的交点进行搜索,但这也不是一个灵活的解决方案,因为我们可以有附近的一些城市,但不在此范围内,否则此范围可能包括不必要的城市 - 获取城市多边形(通过 google maps api 等)并仅在城市中搜索,但它与变体 1 相同且效率较低。
我还可以添加一些距离来增加多边形/椭圆/矩形的大小。但距离是多少?
您对此有何看法? 你有同样的情况吗? 你做了什么来解决它?
提前谢谢你!
更新 1: 它与 Whats the fastest way to lookup big tables for points within radius MySQL (latitude longitude) 无关,因为这个关于按半径快速搜索的问题,但我正在寻找按城市而不是某个半径进行最佳灵活搜索的解决方案.
【问题讨论】:
-
@e4c5 只是在半径范围内搜索,我的问题更复杂,并不强迫我选择这个解决方案
标签: mysql google-maps geometry