# exportKml

#### exportKml(options) → Promise.<Object>
DataSources/exportKml.js 297

Exports an EntityCollection as a KML document. Only Point, Billboard, Model, Path, Polygon, Polyline geometries will be exported. Note that there is not a 1 to 1 mapping of Entity properties to KML Feature properties. For example, entity properties that are time dynamic but cannot be dynamic in KML are exported with their values at options.time or the beginning of the EntityCollection's time interval if not specified. For time-dynamic properties that are supported in KML, we use the samples if it is a `SampledProperty` otherwise we sample the value using the options.sampleDuration. Point, Billboard, Model and Path geometries with time-dynamic positions will be exported as gx:Track Features. Not all Materials are representable in KML, so for more advanced Materials just the primary color is used. Canvas objects are exported as PNG images.

Name | Type | Description
--- | --- | ---

`options`

Object

An object with the following properties:

Name | Type | Default | Description
--- | --- | --- | ---
`entities` | EntityCollection |  | The EntityCollection to export as KML.
`ellipsoid` | Ellipsoid | `Ellipsoid.WGS84` | optional The ellipsoid for the output file.
`modelCallback` | exportKml~ModelCallback |  | optional A callback that will be called with a `ModelGraphics` instance and should return the URI to use in the KML. Required if a model exists in the entity collection.
`time` | JulianDate | `entities.computeAvailability().start` | optional The time value to use to get properties that are not time varying in KML.
`defaultAvailability` | TimeInterval | `entities.computeAvailability()` | optional The interval that will be sampled if an entity doesn't have an availability.
`sampleDuration` | Number | `60` | optional The number of seconds to sample properties that are varying in KML.
`kmz` | Boolean | `false` | optional If true KML and external files will be compressed into a kmz file.

##### Returns:

A promise that resolved to an object containing the KML string and a dictionary of external file blobs, or a kmz file as a blob if options.kmz is true.

##### Example:

    Cesium.exportKml({
         entities: entityCollection
     })
      .then(function(result) {
        // The XML string is in result.kml

        var externalFiles = result.externalFiles
        for(var file in externalFiles) {
          // file is the name of the file used in the KML document as the href
          // externalFiles[file] is a blob with the contents of the file
        }
      });

##### Demo:

- Cesium Sandcastle KML Export Demo

### Type Definitions

#### ModelCallback(model, time, externalFiles) → String
DataSources/exportKml.js 1289

Since KML does not support glTF models, this callback is required to specify what URL to use for the model in the KML document. It can also be used to add additional files to the `externalFiles` object, which is the list of files embedded in the exported KMZ, or otherwise returned with the KML string when exporting.

Name | Type | Description
--- | --- | ---
`model` | ModelGraphics | The ModelGraphics instance for an Entity.
`time` | JulianDate | The time that any properties should use to get the value.
`externalFiles` | Object | An object that maps a filename to a Blob or a Promise that resolves to a Blob.

##### Returns:

The URL to use for the href in the KML document.