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:
You must be logged in to post a comment.