question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

This issue has been heavily edited since Andre’s original write-up and is now maintained by @mramato.

The 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. Current work is taking place in the kml branch 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.

The 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.

Related Links

Mailing-list topic Google Documentation OGC Specification

Random notes

  • We need to match handling of missing x/y/w/h values when using Placemark gx sub-region
  • 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.
  • Cesium doesn’t have any way to support BalloonStyle:displayMode. I’m not sure we care.
  • We currently replace BalloonStyle text $[geDirections] with nothing. If we ever provide out of the box routing, we can use that instead. (https://github.com/gregjacobs/Autolinker.js) can be used to do this.
  • 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.
  • We need to support passing an ellipsoid to KmlDataSource to support other planets.
  • 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)
  • 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).
  • 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
  • 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.
  • 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.

Issue Analytics

  • State:open
  • Created 10 years ago
  • Comments:81 (49 by maintainers)

github_iconTop GitHub Comments

1reaction
ggetzcommented, Jun 21, 2022

Hi @icarter09,

  1. I believe StyleMap -> Highlight is still yet to be implemented.
  2. It would be great if you could contribute this! I’ll look into getting you some more information, but in the meantime this comment mentions the areas of the code to look.
1reaction
paullenhardtcommented, Nov 27, 2019

Well that would make plenty of sense. Apparently you can stare at an issue for hours and still never see the obvious.

GoogleEarth seems to ignore the <visibility> tag (I originally had set the <visibility> to ‘0’ within my kml generator to try to suppress the display upon KML loading and forgot about removing the <visibility> tag when it had no effect on GoogleEarth) so I am glad to see that Cesium honors that tag.

The nested folders was simply because I pulled the example from a much larger data-set where there was more data which the nesting provided organization to.

Thanks for the assist in debugging despite the obvious blunder on my part.

Read more comments on GitHub >

github_iconTop Results From Across the Web

KML Documentation Introduction | Keyhole Markup Language
KML files and their related images (if any) can be compressed using the ZIP format into KMZ archives. To share your KML and...
Read more >
KML support in ArcGIS Server—ArcGIS Server
KML service operations ... KML services have built-in operations that allow KML clients to perform various requests on the server. When publishing your...
Read more >
Import KML map data into Google Earth - Computer
If you're unable to view complex KML files, use Google Earth for desktop (version 7), which supports all KML features. Import this info...
Read more >
Keyhole Markup Language - Wikipedia
Google Earth was the first program able to view and graphically edit KML files, but other projects such as Marble have added KML...
Read more >
KML Computer Services: IT Support Services | Bluffton, SC ...
KML Computer Services provides comprehensive IT services, computer repair, network & cabling solutions & cybersecurity services. Click it call today!
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found