2011-01-05 74 views
1

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

问题是,储量大小差别很大 - 从一个小池塘到几百公里的大小。因此,我无法使用中心点的坐标来查找最近的储备。相反,我需要计算储备多边形的最近点以找到最近的点。使用KML中的数据 - 我将如何着手实现这一目标?

我只设法找到一个其他人问这并没有一个人回答说:(

+0

你能提供一个链接到其他的问题吗?你需要最近的多边形中的实际最近点还是距给定点最近的多边形? – Anna 2011-01-05 20:28:57

+0

斯图尔特,你是计算后端还是应用程序? – Xailor 2011-01-05 21:10:46

+0

如何添加meanRadius参数。计算到保留中心的距离,然后减去保留的平均半径。 – Phil 2011-06-05 22:58:20

回答

2

嗯,有根据您的需要了几个不同的解决方案。要求的精确度越高,需要更多的工作。我喜欢Phil的meanRadius参数想法,这会让你大致了解哪个多边形是最接近的,并且很容易计算,如果多边形是“circlish”,这个想法效果最好,如果多边形的形状非常不规则,想法失去它的准确性。

从数学的角度来看,这里是你想通过所有多边形的所有点做的。循环的。计算到当前的coordinat从这些点的距离即然后只是跟踪哪一个最接近。有一个最后的皱纹。想象一下两点制作的线段非常长。你位于距线路中点一米远的地方。那么,这两点的距离非常大,而实际上你非常接近多边形。你将需要计算您的距离坐标每一个可能的线段,您可以在各种不同的方式,其罗列如下操作:

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

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

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