我正在使用Google Maps API,并且在世界范围内有一些坐标(标记)。如何获得一英里内点的标记列表的最佳方法,该标记列表的中心是“ A”标记?
我认为的第一种方法是计算点A与所有其他点之间的距离,并对数组进行排序。它可以工作,但需要进行 n 个交互。
第二种方法将存储坐标和一个“块”(城市,州,国家/地区),然后重复前面的方法,仅在此“块”内部搜索。它仍然是 n ,但是现在'n'较小。
存储数据并对其进行处理的最佳方法是什么?
答案 0 :(得分:0)
您可以存储几个有序的索引和坐标列表,每个基于x,y或z或经度或纬度信息。
例如:
Points = {(2,3), (6,4), (7,1), (1, 9)};
xList = {1, 2, 6, 7};
xIndexList = {3, 0, 1, 2};
yList = {1, 3, 4, 9};
yIndexList = {2, 0, 1, 3};
然后,您可以过滤距A的x坐标1英里以内的x值,并过滤y值的x值,并仅考虑这些索引的重叠部分。 (之后,您仍然应该对这些点进行距离检查。)
虽然有点麻烦,但是如果使用球坐标,则应注意极点和日期线,但这至少很快。