Use go-kml to build a KML structure. Then, marshal using the xml package.
An example using code from the project:
package main
import (
"encoding/xml"
"os"
"github.com/twpayne/go-kml"
)
func main() {
x := kml.KML(
kml.Placemark(
kml.Name("The Pentagon"),
kml.Polygon(
kml.Extrude(true),
kml.AltitudeMode("relativeToGround"),
kml.OuterBoundaryIs(
kml.LinearRing(
kml.Coordinates([]kml.Coordinate{
{-77.05788457660967, 38.87253259892824, 100},
{-77.05465973756702, 38.87291016281703, 100},
{-77.05315536854791, 38.87053267794386, 100},
{-77.05552622493516, 38.868757801256, 100},
{-77.05844056290393, 38.86996206506943, 100},
{-77.05788457660967, 38.87253259892824, 100},
}...),
),
),
),
),
)
e := xml.NewEncoder(os.Stdout)
e.Indent("", " ")
err := e.Encode(x)
if err != nil {
panic(err)
}
}
This prints:
<kml xmlns="http://www.opengis.net/kml/2.2">
<Placemark>
<name>The Pentagon</name>
<Polygon>
<extrude>1</extrude>
<altitudeMode>relativeToGround</altitudeMode>
<outerBoundaryIs>
<LinearRing>
<coordinates>-77.05788457660967,38.87253259892824,100 -77.05465973756702,38.87291016281703,100 -77.0531553685479,38.87053267794386,100 -77.05552622493516,38.868757801256,100 -77.05844056290393,38.86996206506943,100 -77.05788457660967,38.87253259892824,100</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</Placemark>
</kml>
..which renders as this when using Google Earth:

Like this:
Like Loading...
You must be logged in to post a comment.