Google maps 如何在KML中简化(减少点数)?

Google maps 如何在KML中简化(减少点数)?,google-maps,maps,kml,Google Maps,Maps,Kml,我也有类似的问题。我需要在嵌入式谷歌地图上显示多达1000个多边形。多边形位于SQL数据库中,我可以使用自定义HttpHandler(在ASP.NET中)动态地将每个多边形渲染为单个KML文件,如下所示 即使在我的(非常快的)开发机器上,加载几十个形状也需要一段时间。所以有两个问题,真的: 当我超过某个缩放级别时,有什么好的策略可以将它们渲染为标记而不是覆盖 是否有一个公开的算法来简化多边形(减少点的数量),这样我就不会在特定的缩放级别上显示过多的点 除了KML,我对AOL了解不多,但我认为问题

我也有类似的问题。我需要在嵌入式谷歌地图上显示多达1000个多边形。多边形位于SQL数据库中,我可以使用自定义HttpHandler(在ASP.NET中)动态地将每个多边形渲染为单个KML文件,如下所示

即使在我的(非常快的)开发机器上,加载几十个形状也需要一段时间。所以有两个问题,真的:

  • 当我超过某个缩放级别时,有什么好的策略可以将它们渲染为标记而不是覆盖

  • 是否有一个公开的算法来简化多边形(减少点的数量),这样我就不会在特定的缩放级别上显示过多的点


  • 除了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呢?乍一看,您的算法似乎效率要低得多。它还针对固定数量的点,而不是给定的公差-那么,如何将其应用于大量不同复杂度的形状?你知道。。。我可能很快就会尝试实现它。我的应用程序的这一部分很少运行,但再看看,它看起来确实是一个更好的方法。谢谢