AnalyticalGraphicsInc/cesium — pull request #2278 by mramato (2014-11-13 16:20:38+00:00)
Title: GeoJSON load performance

A good chunk of GeoJSON point loading time was because of the `toDataURL` call when assigning `BillborGraphics.image` (which previously only accepted string values). Since `HTMLElement` instances support reference comparison, `ConstantProperty` now accepts then as valid values. This allow us to assign a `canvas` directly to the `BillboardGraphics.image` rather than having to convert to a data URI.

This exposed another issue where setting `Billboard.image` to a `canvas` would cause a new texture to be created every time. I fixed this by using the `canvas.id` property for caching purposes. One drawback of this approach is that if two canvases have the same id property (or a blank id property) then they will be incorrectly cached. However, it's well documented that while not required, all elements should always have a unique id. One way to mitigate this if we want would be to not cache if the id is blank.

Finally, I also cleaned up some doc to mention the new functionality and also fixed the use of deprecated code in `viewerDragDropMixin`.

@shunter since you did the billboard/texture atlas refactoring a couple of months ago, can you take a look at this and make sure there aren't any problems with my approach.