{"action":"created","issue":{"url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/issues/873","labels_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/issues/873/labels{/name}","comments_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/issues/873/comments","events_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/issues/873/events","html_url":"https://github.com/AnalyticalGraphicsInc/cesium/issues/873","id":15655222,"number":873,"title":"KML Support","user":{"login":"andre-nunes","id":3066457,"avatar_url":"https://avatars.githubusercontent.com/u/3066457?v=3","gravatar_id":"","url":"https://api.github.com/users/andre-nunes","html_url":"https://github.com/andre-nunes","followers_url":"https://api.github.com/users/andre-nunes/followers","following_url":"https://api.github.com/users/andre-nunes/following{/other_user}","gists_url":"https://api.github.com/users/andre-nunes/gists{/gist_id}","starred_url":"https://api.github.com/users/andre-nunes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/andre-nunes/subscriptions","organizations_url":"https://api.github.com/users/andre-nunes/orgs","repos_url":"https://api.github.com/users/andre-nunes/repos","events_url":"https://api.github.com/users/andre-nunes/events{/privacy}","received_events_url":"https://api.github.com/users/andre-nunes/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/labels/roadmap","name":"roadmap","color":"e102d8"}],"state":"open","locked":false,"assignee":{"login":"mramato","id":1495196,"avatar_url":"https://avatars.githubusercontent.com/u/1495196?v=3","gravatar_id":"","url":"https://api.github.com/users/mramato","html_url":"https://github.com/mramato","followers_url":"https://api.github.com/users/mramato/followers","following_url":"https://api.github.com/users/mramato/following{/other_user}","gists_url":"https://api.github.com/users/mramato/gists{/gist_id}","starred_url":"https://api.github.com/users/mramato/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mramato/subscriptions","organizations_url":"https://api.github.com/users/mramato/orgs","repos_url":"https://api.github.com/users/mramato/repos","events_url":"https://api.github.com/users/mramato/events{/privacy}","received_events_url":"https://api.github.com/users/mramato/received_events","type":"User","site_admin":false},"milestone":null,"comments":27,"created_at":"2013-06-17T20:51:30Z","updated_at":"2015-05-08T22:14:03Z","closed_at":null,"body":"This issue has been heavily edited since Andre's original write-up and is now maintained by @mramato.\r\n\r\nThe initial KML implementation was started as part of the 2013 Google Summer of Code and resulted in many core features being implemented by @andre-nunes in his [branch](https://github.com/andre-nunes/cesium/tree/kml).  Current work is taking place in the [kml branch](https://github.com/AnalyticalGraphicsInc/cesium/tree/kml) of the official Cesium repository.  Since KML is a large specification, the plan is to implement what we see as the minimum viable product first and officially release that as part of Cesium.  We will then continue to add additional functionality on a feature by feature basis with each Cesium release.\r\n\r\nThe below task list tries to capture everything at a fairly high level for each phase.  There are many hidden features and requirements here and listing them all isn't useful.  For example, we are going to need polygon and polyline draping on terrain as a core Cesium feature (#2172).  We will add new tasks when we encounter an issue as we implement each of the high-level types.  If you have a strong need for a feature that we haven't gotten to yet, or feel we're missing something in the below list; please don't hesitate to let us know.\r\n\r\n#### Related Links\r\n[Mailing-list topic](https://groups.google.com/d/msg/cesium-dev/xz2xwKogybY/jt8h174rknwJ)\r\n[Google Documentation](https://developers.google.com/kml/documentation/)\r\n[OGC Specification](http://www.opengeospatial.org/standards/kml)\r\n\r\n- [x] KmlDataSource\r\n   - [x] KMZ support\r\n   - [x] Proxy support\r\n- [x] [Folder](https://developers.google.com/kml/documentation/kmlreference#folder)\r\n- [ ] [Placemark](https://developers.google.com/kml/documentation/kmlreference#placemark)\r\n   - [x] Geometry\r\n      - [x] [Point](https://developers.google.com/kml/documentation/kmlreference#point)\r\n      - [x] [LineString](https://developers.google.com/kml/documentation/kmlreference#linestring)\r\n      - [x] [LinearRing](https://developers.google.com/kml/documentation/kmlreference#linearring)\r\n      - [x] [Polygon](https://developers.google.com/kml/documentation/kmlreference#polygon)\r\n      - [x] [MultiGeometry](https://developers.google.com/kml/documentation/kmlreference#multigeometry)\r\n      - [x] [gx:MultiTrack](https://developers.google.com/kml/documentation/kmlreference#gxmultitrack)\r\n      - [x] [gx:Track](https://developers.google.com/kml/documentation/kmlreference#gxtrack)\r\n       - [ ] [Model](https://developers.google.com/kml/documentation/kmlreference#model)\r\n- [ ] [Overlay](https://developers.google.com/kml/documentation/kmlreference#overlay)\r\n   - [x] [GroundOverlay](https://developers.google.com/kml/documentation/kmlreference#groundoverlay)\r\n   - [ ] [ScreenOverlay](https://developers.google.com/kml/documentation/kmlreference#screenoverlay)\r\n   - [ ] [Super Overlays](https://developers.google.com/kml/documentation/kml_21tutorial#superoverlays)\r\n   - [ ] [PhotoOverlay](https://developers.google.com/kml/documentation/kmlreference#photooverlay)\r\n- [ ] [NetworkLink](https://developers.google.com/kml/documentation/kmlreference#networklink)\r\n   - [x] Brain dead \"one and done\" `<Link>` support.\r\n- [ ] [NetworkLinkControl](https://developers.google.com/kml/documentation/kmlreference#networklinkcontrol)\r\n- [ ] Styles\r\n   - [x] [LineStyle](https://developers.google.com/kml/documentation/kmlreference#linestyle)\r\n   - [x] [PolyStyle](https://developers.google.com/kml/documentation/kmlreference#polystyle)\r\n   - [x] [IconStyle](https://developers.google.com/kml/documentation/kmlreference#iconstyle)\r\n   - [x] [LabelStyle](https://developers.google.com/kml/documentation/kmlreference#labelstyle)\r\n   - [x] [BalloonStyle](https://developers.google.com/kml/documentation/kmlreference#balloonstyle)\r\n   - [x] [styleUrl](https://developers.google.com/kml/documentation/kmlreference#styleurl)\r\n   - [ ] [StyleMap](https://developers.google.com/kml/documentation/kmlreference#stylemap)\r\n     - [x] normal\r\n     - [ ] highlight\r\n     - [ ] locally defined\r\n   - [ ] [ListStyle](https://developers.google.com/kml/documentation/kmlreference#liststyle) (requires `DataSourceBrowser` for full implementation)\r\n- [ ] Additional `<Link>` and `<Icon>` features\r\n   - [ ] `<refreshMode>`\r\n   - [ ] `<refreshInterval>`\r\n   - [ ] `<viewRefreshMode>`\r\n   - [ ] `<viewRefreshTime>`\r\n   - [ ] `<viewBoundScale>`\r\n   - [ ] `<viewFormat>`\r\n   - [ ] `<httpQuery>`\r\n- [ ] [LookAt](https://developers.google.com/kml/documentation/kmlreference#lookat)\r\n- [ ] [Camera](https://developers.google.com/kml/documentation/kmlreference#camera)\r\n- [ ] [ExtendedData](https://developers.google.com/kml/documentation/kmlreference#extendeddata)\r\n   - [x] `<Data>`\r\n   - [ ] `<Schema>` and `<SchemaData>`\r\n   - [ ] Arbitrary XML data\r\n- [x] Resolve KMZ links inside of an entity description.\r\n- [x] Turn plain text urls in descriptions into links.\r\n- [x] [gx:LatLonQuad](https://developers.google.com/kml/documentation/kmlreference#gxlatlonquad)\r\n   - [ ] Trapezoidal Texture Projection\r\n- [ ] [Region](https://developers.google.com/kml/documentation/kmlreference#region)\r\n- [ ] root:// notation for older KML documents\r\n- [ ] [gx:Tour](https://developers.google.com/kml/documentation/kmlreference#gxtour)\r\n- [ ] [gx:drawOrder](https://developers.google.com/kml/documentation/kmlreference#gxdraworder)\r\n- [ ] `<gx:altitudeOffset>` for LinearRing and LineString\r\n- [ ] `<gx:angles>` for Track and MultiTrack (applies to both model and billboard).\r\n- [ ] `<Icon>` gx extensions `x`, `y`, `w`, and `h` for `GroundOverlay`\r\n- [ ] gx extensions for `LineStyle`\r\n- [ ] `xal:AddressDetails`\r\n- [ ] `altitudeMode`\r\n- [ ] `gx:altitudeMode`\r\n- [x] visibility\r\n- [ ] `ge:Track` gets billboard heading from angles or direction of travel.\r\n- [ ] Support for TIFF images. [forum discussion](https://groups.google.com/d/msg/cesium-dev/_MoqjO-PgcE/pPOZLwvZ15oJ)\r\n\r\n__Random notes__\r\n * We need to match handling of missing x/y/w/h values when using Placemark gx sub-region\r\n * All billboards KML produces are currently square, Google Earth instead scales the longer edge to 32 while maintaining aspect ratio.  This can be seen in the KMZ Sandcastle demo, which has squate flags in Cesium and rectangular flags in GE.\r\n * Cesium doesn't have any way to support `BalloonStyle:displayMode`. I'm not sure we care.\r\n * We currently replace BalloonStyle text `$[geDirections]` with nothing.  If we ever provide out of the box routing, we can use that instead.\r\n(https://github.com/gregjacobs/Autolinker.js) can be used to do this.\r\n * We may be able to use `createObjectURL` for loading data from a zip file (which is currently using data uris). The problem here is that you need to call `revokeObjectURL` in order to clean things up when you're done.\r\n * We need to support passing an ellipsoid to `KmlDataSource` to support other planets.\r\n * We may want to expose some way to customize default values, either by exposing default entity graphics directly, or exposing a limited set of options (like GeoJSONDataSource does)\r\n * Clicking on a link in a balloon description that returns KML has special behavior in GE.  While we probably won't mirror that directly in Cesium, we should provide a mechanism to be able to do so (maybe through events).\r\n * `zip.js` has the ability to report progress which we currently don't utilize. `loadXmlFromZip` and `loadDataUriFromZip` in KmlDataSource.js would be the place to start if we ever want to add it.  We just need to pass a `onprogress` callback as the third parameter to `entry.getData`\r\n * It would be nice to have a KML animation demo that uses TimeSpan, similar to the US states formation demo in Google's own documentation.\r\n * Google Earth silently ignores errors with invalid dates (such as having garbage in a `when` block).  If we want to match Google Earth, we should too.  Rather than try/catching JulianDate.fromIso8601, we should add a exceptionless version that returns undefined."},"comment":{"url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/issues/comments/100381116","html_url":"https://github.com/AnalyticalGraphicsInc/cesium/issues/873#issuecomment-100381116","issue_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/issues/873","id":100381116,"user":{"login":"Hoverbear","id":130903,"avatar_url":"https://avatars.githubusercontent.com/u/130903?v=3","gravatar_id":"","url":"https://api.github.com/users/Hoverbear","html_url":"https://github.com/Hoverbear","followers_url":"https://api.github.com/users/Hoverbear/followers","following_url":"https://api.github.com/users/Hoverbear/following{/other_user}","gists_url":"https://api.github.com/users/Hoverbear/gists{/gist_id}","starred_url":"https://api.github.com/users/Hoverbear/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Hoverbear/subscriptions","organizations_url":"https://api.github.com/users/Hoverbear/orgs","repos_url":"https://api.github.com/users/Hoverbear/repos","events_url":"https://api.github.com/users/Hoverbear/events{/privacy}","received_events_url":"https://api.github.com/users/Hoverbear/received_events","type":"User","site_admin":false},"created_at":"2015-05-08T22:14:03Z","updated_at":"2015-05-08T22:14:03Z","body":"Hi folks, is there anyone working on `lookAt` right now? If not, could someone point me at where I might want to look to add this or at least access the data in the KML? Thanks."}}