Google maps 如何在KML中简化(减少点数)?
我也有类似的问题。我需要在嵌入式谷歌地图上显示多达1000个多边形。多边形位于SQL数据库中,我可以使用自定义HttpHandler(在ASP.NET中)动态地将每个多边形渲染为单个KML文件,如下所示 即使在我的(非常快的)开发机器上,加载几十个形状也需要一段时间。所以有两个问题,真的:Google maps 如何在KML中简化(减少点数)?,google-maps,maps,kml,Google Maps,Maps,Kml,我也有类似的问题。我需要在嵌入式谷歌地图上显示多达1000个多边形。多边形位于SQL数据库中,我可以使用自定义HttpHandler(在ASP.NET中)动态地将每个多边形渲染为单个KML文件,如下所示 即使在我的(非常快的)开发机器上,加载几十个形状也需要一段时间。所以有两个问题,真的: 当我超过某个缩放级别时,有什么好的策略可以将它们渲染为标记而不是覆盖 是否有一个公开的算法来简化多边形(减少点的数量),这样我就不会在特定的缩放级别上显示过多的点 除了KML,我对AOL了解不多,但我认为问题
除了KML,我对AOL了解不多,但我认为问题2的通常解决方案包括迭代点,并删除特定大小下的任何线段。在某些情况下,这会造成一些“不幸”的影响,但这相对来说比较快且容易做到。我推荐两件事: -计算并合并接触的多边形。这需要大量的处理和数学,但我已经做了,所以我知道这是可能的。 -创建您自己的覆盖,而不是使用PNG格式的KML,同时在前面的建议中合并它们。你必须创建很多PNG,但它在客户端上运行得很快
祝你好运:)对于你的第二个问题:你的第一个问题需要的是,你能计算出一个特定多边形的面积,并将每个缩放级别与一个特定的最小区域相关联,以便根据缩放级别放大或缩小多边形的消失和标记的出现吗
对于第二个问题,我将使用Mark Bessey的建议。我需要一个解决您的#2问题的解决方案,在查看了一些可用的行简化算法后,我创建了自己的 这个过程很简单,而且似乎工作得很好,但如果没有正确实施,可能会有点慢:
p[0..n]
是您的点数组
让T[n]
定义为由点P[n-1]、P[n]、P[n+1]
Max
是您试图将这条线减少到的点数
T[1..n-1]
T[i]
P[i]
以基本上展平三角形T[n-1],T[n+1]
Max
谢谢,这是我需要的。我在CodeProject上找到了一个D-P的C#实现,我已经对它进行了修改,看起来效果很好。谢谢,我真的没有足够的资源来复制Google API免费提供的这么多内容。出于好奇,为什么不选择Douglas Peucker呢?乍一看,您的算法似乎效率要低得多。它还针对固定数量的点,而不是给定的公差-那么,如何将其应用于大量不同复杂度的形状?你知道。。。我可能很快就会尝试实现它。我的应用程序的这一部分很少运行,但再看看,它看起来确实是一个更好的方法。谢谢