计算iPhone应用程序的KML多边形的最近点

时间:2011-01-05 20:04:38

标签: iphone maps kml distance

我有一系列自然保护区需要使用KML数据中包含的坐标在地图上绘制为多边形叠加。我在Apple网站上找到了一个教程,用于在地图实例上显示KML叠加层。

问题在于储量大小不一 - 从一个小池塘到几百公里。因此,我不能使用中心点的坐标来找到最近的储备。相反,我需要计算保留多边形的最近点以找到最近的点。使用KML中的数据 - 我将如何尝试实现此目标?

我只是设法找到另一个人问这个而且没有人回答:(

1 个答案:

答案 0 :(得分:2)

嗯,根据您的需要,有几种不同的解决方案。所需的准确度越高,所需的工作量就越多。我喜欢Phil的meanRadius参数。这将使您大致了解哪个多边形最接近,并且很容易计算。如果多边形是"那么这个想法最有效。#34;如果多边形的形状非常不规则,那么这个想法会失去它的准确性。

从数学的角度来看,这就是你想要做的。遍历所有多边形的所有点。计算从这些点到当前坐标的距离。然后跟踪哪一个最接近。最后有一个皱纹。想象一下两点制作很长的线段。您距离线路中点一米远。那么,这两个点的距离非常大,而实际上你非常接近多边形。您需要计算从坐标到每个可能线段的距离,您可以通过以下各种方式进行这些操作:

http://www.worsleyschool.net/science/files/linepoint/distance.html

最后,你需要问自己,我在任何多边形中吗?如果你距离多边形上的一个点10米远,但事实上,在多边形内,显然,你需要考虑这一点。最好的方法是使用光线投射算法:

http://en.wikipedia.org/wiki/Point_in_polygon#Ray_casting_algorithm