Skip to content

0.10.0

Compare
Choose a tag to compare
@matteblair matteblair released this 29 Nov 23:30

This is a major update to the Tangram Android SDK and the Tangram iOS SDK. There are breaking changes to both SDK interfaces in this release.

It's been a while since our last release! The Android and iOS SDKs have grown up a lot since the previous release. We're not quite ready to call it 1.0 yet, but it's definitely getting close.

Android

  • Breaking change: Refactored HTTP handling to use the HttpHandler interface, with a default OkHTTP implementation DefaultHttpHandler. (#1848, #1849)
  • Breaking change: Refactored map position interface. Create a CameraUpdate with CameraUpdateFactory and apply it to the MapController to change the map position. This enables complex movements like centering on a bounded area and allows you to save and re-use updates (it also more closely resembles the Google Maps SDK so porting should be a bit easier!). (#1819, #1851, #1858, #1906)
  • Breaking change: Refactored gesture configuration interface. Gestures are now configured through a TouchInput instance associated with the MapController. This allows configuring which gesture types are enabled and which can be recognized simultaneously. (#1856, #1870)
  • Breaking change: MapController is instantiated asynchronously to prevent delays on the UI thread. Also helps avoid calling native library load calls on the main thread. (#1862, #1878)
  • Added event callbacks for map changes. (#1852, #1883, #1924)
  • Fixed some objects being retained in memory longer than expected. (#1872)
  • Fixed a potential exception when getMapAsync is called multiple times in an Activity. (#1873)
  • Fixed some object lifetime errors in URL callbacks. (#1880, #1881)
  • Fixed font file loading on some devices. (#1879)
  • Enabled using MapController subclasses with MapView. (#1892, #1895)
  • Pending URL requests are now cancelled when the map is disposed. (#1899)
  • Added fallback EGL configurations for devices that don't support our desired options. (#1912)
  • Moved Bitmap data conversions in to native code. (#1907)
  • Introduced GLViewHolder abstraction to enabled rendering to targets besides GLSurfaceView. (#1913)
  • Snapshot and release builds now use NDK r17b. (#1916)

iOS

  • Breaking change: TGMapViewController has been replaced by TGMapView, a UIView whose behavior can be customized with delegates. (#1835, #1842)
  • Breaking change: TGHttpHandler class has been replaced by the TGUrlHandler protocol. (#1839)
  • Provided delegate events for map change events. (#1847, #1883, #1924)
  • Breaking change: Refactored map position interface. Create and apply a TGCameraPosition to move the map. This enables complex movements like centering on a bounded area (it also more closely resembles the MapKit SDK so porting should be a bit easier!). (#1853, #1857).
  • Breaking change: Replaced custom location types with CoreLocation types. (#1863)
  • Fixed autoresizing mask not being correctly applied to inner GLKView. (#1891)
  • Demo app now retrieves Nextzen API key from user environment at build time. (#1890)
  • Pending URL requests are now cancelled after the map is disposed. (#1902)
  • Tweaked gesture recognizer behavior to more closely match MapKit behavior. (#1905)
  • Map rendering now gets a default background color from the backgroundColor property of the UIView. (#1921)

Other Features

  • Added configurable zoom limits for all platform SDKs. (#1854)
  • Added a wireframe rendering mode in the desktop app for debugging. (#1871 - thanks @cleeus!)
  • Enabled zoom stops for scene background color. (#1885 - thanks @polar!)
  • Added an extensible Imgui window for the desktop demo app. (#1915)
  • Enabled use of a limited set of ECMAScript 6 features in embedded JS functions, thanks to Duktape 2.3. (#1949)

Fixes

  • Fixed some build issues with shader processing scripts. (#1844 - thanks @polar! #1845, #1846)
  • Fixed error reporting for iOS builds. (#1861, #1859)
  • Converting a LngLat that is outside the viewport to a screen position now returns a screen coordinate rather than NaN coordinates. (#1855)
  • Simplified antimeridian wrapping for better performance and memory use. (#1860)
  • Fixed a possible crash when reading an invalid scene YAML file. (#1866 - thanks @polar!)
  • Fixed some POSIX compatibility issues. (#1876 - thanks @bentley!)
  • Fixed some unnecessary copy operations in URL loading. (#1877)
  • Fixed and simplified some YAML data type conversions. (#1874)
  • Fixed some memory allocations being retained longer than expected. (#1887)
  • Fixed an issue that could cause screen position to LngLat conversions to use out-of-date matrices. (#1898)
  • Improved CI build speed for iOS jobs. (#1904)
  • Continuous rendering now pauses automatically if no animated style is currently being drawn and the scene is not explicitly animated. (#1901, #1918)
  • Fixed some inefficient parsing of configuration from YAML. (#1894)
  • Fixed some intermittent CI out-of-memory failures. (#1917, #1920)
  • Fixed raster tile requests not being cancelled correctly. (#1928)
  • Fixed "proxy" tile requests not being cancelled correctly. (#1929).
  • Improved font loading speed on Linux. (#1934)
  • View complete event is now only triggered on the first complete frame after a change, not on every complete frame. (#1937)
  • Lots of miscellaneous clean-ups! (#1945)