寻找附近位置需要帮助

时间:2011-08-17 14:39:38

标签: iphone sqlite mapkit core-location

我正在使用app,需要找到特定产品的附近分销商。截至目前,我有当前位置的纬度和经度。除此之外,我还列出了所有产品经销商及其各自的坐标。我正在运行查询,它给出了最近的10个位置,但为此,它会彻底记录DB中的每个记录,计算当前和特定位置之间的距离。这花费了太多时间。我还有其他选择吗?

3 个答案:

答案 0 :(得分:1)

首先,您可以通过创建max和min long和lat(比如在当前位置的10英里范围内)来缩小数据集的范围。然后,您可以通过lat>查询数据集。 minLat和lat< maxLax等。如果您需要,可以通过计算缩小子集上的实际距离来对它们进行排序。

答案 1 :(得分:1)

为了避免计算每个位置的距离,您可以使用最大左上角长度(向上10英里,向左10英里)和最长右下角长(10英里)创建一个长长的盒子(比方说10英里)向下和10英里右)。然后,您的查询将使用> =和< =在该框中找到lat long,然后计算每个距离以过滤掉角落中超过10英里的位置。

另一个选择是研究spatial indexing for SQLite

答案 2 :(得分:0)

您可以通过在您的位置周围创建矩形缓冲区来缩小位置列表,以过滤附近的位置。

SELECT * FROM table t WHERE.t<(lat + buff)AND t.long<(long + buff)AND t.lat>(lat-buff)AND t.long>(long-buff)

lat,long - 您的位置,buff - 您可以根据应用需求调整一些值(例如100 脚,1英里等)

然后你可以对返回的记录进行距离计算。