0.10.0
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 implementationDefaultHttpHandler
. (#1848, #1849) - Breaking change: Refactored map position interface. Create a
CameraUpdate
withCameraUpdateFactory
and apply it to theMapController
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 theMapController
. 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 anActivity
. (#1873) - Fixed some object lifetime errors in URL callbacks. (#1880, #1881)
- Fixed font file loading on some devices. (#1879)
- Enabled using
MapController
subclasses withMapView
. (#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 besidesGLSurfaceView
. (#1913) - Snapshot and release builds now use NDK r17b. (#1916)
iOS
- Breaking change:
TGMapViewController
has been replaced byTGMapView
, aUIView
whose behavior can be customized with delegates. (#1835, #1842) - Breaking change:
TGHttpHandler
class has been replaced by theTGUrlHandler
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 theUIView
. (#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)