0

我发现了几个例子,人们通过访问表单上的一个按钮编写了在谷歌地球上映射点的代码,该按钮循环遍历表或查询中的数据。我已经使用此代码通过循环遍历记录集来映射多个点。我现在正在尝试将这些点与多边形连接起来。我已经在同一个循环代码中包含了多边形的代码。但是,不是用一个多边形连接这些点,而是为每个点制作一个多边形。我需要将循环期间找到的所有点都包含在多边形代码中,以使其正常工作。不知道如何做到这一点。代码如下。这是查看包含 SiteID、LongW、LatN 字段的表。每个站点有4-8个点。感谢您的任何建议。

Do While Not rst.EOF
        f.Write "<Placemark>"
            f.Write "<name>" & rst!SiteID & "</name>"
            f.Write "<styleUrl>#s_ylw-pushpin_hll</styleUrl>"
            f.Write "<Point>"
            f.Write "<coordinates>" & rst!LongW & "," & rst!LatN & "</coordinates>"
            f.Write "</Point>"
        f.Write "</Placemark>"

        f.Write "<Placemark>"
            f.Write "<name>UntitledPolygon</name>"
            f.Write "<styleUrl>#m_ylw-pushpin</styleUrl>"
            f.Write "<Polygon>"
            f.Write "<tessellate>1</tessellate>"
            f.Write "<outerBoundaryIs>"
            f.Write "<LinearRing>"
            f.Write "<coordinates>" & rst!LongW & "," & rst!LatN & "</coordinates>"
            f.Write strText
        f.Write "</LinearRing></outerBoundaryIs></Polygon></Placemark>" & vbCrLf
rst.MoveNext
Loop
4

1 回答 1

2

干得好。我不知道您的坐标是否需要按特定顺序排列。或者,如果他们需要包含海拔高度。

这里的基本思想是,在您收集所有相关坐标之前,您不应该输出多边形文本/代码。这意味着您在循环之后执行此操作。

Dim sCoord as String
Do While Not rst.EOF
    f.Write "<Placemark>"
        f.Write "<name>" & rst!SiteID & "</name>"
        f.Write "<styleUrl>#s_ylw-pushpin_hll</styleUrl>"
        f.Write "<Point>"
        f.Write "<coordinates>" & rst!LongW & "," & rst!LatN & "</coordinates>"
        sCoord = sCoord & rst!LongW & "," & rst!LatN & vbCrLf
        f.Write "</Point>"
    f.Write "</Placemark>"
    rst.MoveNext
Loop

f.Write "<Placemark>"
    f.Write "<name>UntitledPolygon</name>"
    f.Write "<styleUrl>#m_ylw-pushpin</styleUrl>"
    f.Write "<Polygon>"
    f.Write "<tessellate>1</tessellate>"
    f.Write "<outerBoundaryIs>"
    f.Write "<LinearRing>"
    f.Write "<coordinates>" & sCoord & "</coordinates>"
    f.Write strText
f.Write "</LinearRing></outerBoundaryIs></Polygon></Placemark>" & vbCrLf
于 2013-08-31T00:32:02.387 回答