# KmlDataSource

#### new Cesium.KmlDataSource(proxy)
DataSources/KmlDataSource.js 1673

  A `DataSource` which processes Keyhole Markup Language 2.2 (KML).

  KML support in Cesium is incomplete, but a large amount of the standard, as well as Google's `gx` extension namespace, is supported. See Github issue #873 for a detailed list of what is and isn't support. Cesium will also write information to the console when it encounters most unsupported features.

  Non visual feature data, such as `atom:author` and `ExtendedData` is exposed via an instance of `KmlFeatureData`, which is added to each `Entity` under the `kml` property.

  Name | Type | Description
  --- | --- | ---
  `proxy` | DefaultProxy | optional A proxy to be used for loading external data.

  ##### Example:

      var viewer = new Cesium.Viewer('cesiumContainer');
      viewer.dataSources.add(Cesium.KmlDataSource.load('../../SampleData/facilities.kmz'));

  ##### Demo:

  - Cesium Sandcastle KML Demo

  ##### See:

  - Open Geospatial Consortium KML Standard
  - Google KML Documentation

### Members

#### changedEvent : Event
DataSources/KmlDataSource.js 1750

  Gets an event that will be raised when the underlying data changes.

#### clock : DataSourceClock
DataSources/KmlDataSource.js 1720

  Gets the clock settings defined by the loaded KML. This represents the total availability interval for all time-dynamic data. If the KML does not contain time-dynamic data, this value is undefined.

#### entities : EntityCollection
DataSources/KmlDataSource.js 1730

  Gets the collection of `Entity` instances.

#### errorEvent : Event
DataSources/KmlDataSource.js 1760

  Gets an event that will be raised if an error is encountered during processing.

#### isLoading : Boolean
DataSources/KmlDataSource.js 1740

  Gets a value indicating if the data source is currently loading data.

#### loadingEvent : Event
DataSources/KmlDataSource.js 1770

  Gets an event that will be raised when the data source either starts or stops loading.

#### name : String
DataSources/KmlDataSource.js 1708

  Gets a human-readable name for this instance. This will be automatically be set to the KML document name on load.

### Methods

#### staticCesium.KmlDataSource.load(data, options) → Promise.<KmlDataSource>
DataSources/KmlDataSource.js 1695

  Creates a Promise to a new instance loaded with the provided KML data.

  Name | Type | Description
  --- | --- | ---
  `data` | String | Document | Blob | A url, parsed KML document, or Blob containing binary KMZ data or a parsed KML document.
  `options` | Object | optional An object with the following properties:
  Name | Type | Description
  --- | --- | ---
  `proxy` | DefaultProxy | optional A proxy to be used for loading external data.
  `sourceUri` | String | optional Overrides the url to use for resolving relative links and other KML network features.

  ##### Returns:

  A promise that will resolve to a new KmlDataSource instance once the KML is loaded.

#### load(data, options) → Promise.<KmlDataSource>
DataSources/KmlDataSource.js 1785

  Asynchronously loads the provided KML data, replacing any existing data.

  Name | Type | Description
  --- | --- | ---
  `data` | String | Document | Blob | A url, parsed KML document, or Blob containing binary KMZ data or a parsed KML document.
  `options` | Object | optional An object with the following properties:
  Name | Type | Description
  --- | --- | ---
  `sourceUri` | Number | optional Overrides the url to use for resolving relative links and other KML network features.

  ##### Returns:

  A promise that will resolve to this instances once the KML is loaded.