1

我想查询给定点半径 500 米内的所有可能的街道名称。多个帖子使用Haversine 公式或它的某个版本引用了谷歌商店定位器示例。但我也遇到了一些具有更简化解决方案的帖子。

他们只是通过添加 lat 和 long变量将这些点视为 x,y 坐标,如下所示。

如果这将是查询 mysql而又不会变得非常复杂并且仍然可以获得良好结果的最快方法,我正在徘徊。我还没有很多数据,所以我想知道我是否走在正确的轨道上。使用这种方法有什么缺点或不准确吗?

我不明白这怎么可能是一个半径范围,它看起来更像是一个单向查询?

Distance = 0.1; // Range in degrees (0.1 degrees is close to 11km)
LatN = lat + Distance;
LatS = lat - Distance;
LonE = lon + Distance;
LonW = lon - Distance;

...Query DB with something like the following:
SELECT *
FROM table_name
WHERE 
(store_lat BETWEEN LatN AND LatS) AND
(store_lon BETWEEN LonE AND LonW)
4

2 回答 2

0

你可以使用 ElasticSearch,MySQL 总是比 ES 慢。

于 2014-04-07T12:39:47.337 回答
0

您可能想在 GIS 站点上提出这个问题。我自己用这个答案来解决类似的问题。我可以看到您提出的解决方案可能会更快,但请注意您的四个点描述的是正方形而不是圆形,因此它不会被视为“半径”。

于 2013-05-04T21:46:32.043 回答