Nutiteq is now part of CARTO! Please use latest CARTO Mobile SDK for new projects. Nutiteq SDK 3.x support and updates ended in 2017, documentation here is outdated.

Release notes


Version: 3.3.0

GIT commit: 202b36391695d367cd3cb9622e0940ce5932a033

Changes/new features

  • SDK has now support for routing. Both online and offline routing (based on routing packages, similar to offline map packages) is supported.
  • SDK now supports CartoCSS for styling base maps and vector tile overlay maps
  • Implemented Torque tile support with CartoCSS styling for rendering large animated point sets
  • UTFGrid support is added for raster layers
  • Native level HTTP network stack is now replaced with platform-specific HTTP implementations. This provides HTTPS support for all platforms, implements compression and may provide better performance.
  • SDK now supports version 2.1 specification of Mapbox Vector Tiles
  • Implemented preliminary support for MapZen vector tiles
  • Added arm64 and x64 builds to Xamarin Android DLL
  • Added { } tag support to Mapnik XML text expression parser, so arbitrary expressions may now be substituted in the texts
  • Added .length, .uppercase, .lowercase and .capitalize operators to Mapnik XML expressions
  • Made handling two-finger touch gestures more stable

API updates and changes

  • Added getSDKVersion method to BaseMapView class
  • Most listener methods have now default 'empty' implementations. Previously unimplemented methods gave runtime errors and were not properly identified during compilation
  • Added new classes for routing: NutiteqOfflineRoutingService, NutiteqOnlineRoutingService, PackageManagerRoutingService, RoutingInstruction, RoutingRequest, RoutingResult, RoutingService
  • Added UTFGridRasterTileLayer class for grid-based interaction with raster tiles
  • Added CartoCSSStyleSet class for styling Torque and vector tile layers using CartoCSS
  • Added TorqueTileLayer, TorqueTileDecoder classes for rendering animated point sets
  • Added getLabelOrder/setLabelOrder methods to VectorTileLayer, vector tile labels can be placed on top of overlay geometry using this method
  • Added getPackageType method to PackageInfo, this method can be used to detect offline package type (map or routing currently)
  • Added getPackageManager method to PackageManagerTileDataSource
  • Added getPackageStatus method with MapTile argument type to PackageTileMask, previous getPackageStatus with 3 arguments is deprecated
  • Added getCartoCSSStyle/setCartoCSSStyle methods to MBVectorTileDecoder for styling vector tiles using CartoCSS
  • Added getMaxMemorySize and getLODResolutionFactor methods to NMLModelLODTreeLayer
  • Fixed typo in Options class method name: setClickTypeDetecton is now setClickTypeDetection
  • Removed get2PowZoom method from ViewState
  • Removed internal GLUtils class from public API
  • Removed offsetPercent argument from ViewState.screenToWorldPlane method. The argument had no effect on the result.
  • Removed deprecated NTMapViewController from iOS SDK
  • Removed deprecated Bitmap class constructors
  • Removed deprecated KDTREESPATIALINDEX, NULLSPATIALINDEX enum values
  • Xamarin API change: Made ClickTypeDetection property writable, removed setClickTypeDetecton
  • Xamarin API change: removed getHTTPHeaders/setHTTPHeaders, added HTTPHeaders property to HTTPTileDataSource
  • Xamarin API change: removed setMaxMemorySize/setLODResolutionFactor from NMLModelLODTreeLayer, added LODResolutionFactor, MaxMemorySize properties
  • Xamarin API change: removed getBounds from Projection, added Bounds property

Fixes, internal changes

  • Additional vector tile decoding optimizations, complex tiles with complex styles are decoded up to several times faster
  • Regex-ex matching support in CartoCSS
  • Several minor compatibility fixes in vector tile decoder regarding expressions involving different value types
  • Fixed RasterTileLayer and TileLoadListener interaction issue when layer was invisible or outside of visible zoom range
  • Added Maps API tile support to TorqueVectorTileDecoder, previous version supported only internal SQL API
  • SDK can automatically renew licenses via online service
  • SDK now logs its build info, OS version info and device type when MapView is created. This info can be relevant when reporting issues.
  • Fixed warning/messages when MapView was used inside IDE layout editor of Eclipse/Android Studio
  • Fixed vector tile basemap labels/texts moving away from correct position when zoomed in multiple levels
  • Fixed PackageManagerTileDataSource API wrapping issue
  • Fixed potential crash with ClusteredVectorLayer when custom VectorElement instances were used for cluster elements
  • Implemented various rendering performance optimizations for complex vector tiles
  • Made vector tile decoding 30% faster on average (affects mostly offline tiles)
  • Implemented better placement of repeated shields, texts and markers in vector tiles
  • Changed rendering method of 3D buildings in vector tiles, new method provides much better performance on some devices (iPad 3)
  • Implemented preliminary support for element-level comp-op and layer-level comp-op operations in vector styles. Currently only a subset of composite operations are supported (only those that have direct translation to OpenGL blending modes)
  • Added preliminary support for layer level opacity in vector tile renderer
  • Implemented 'fill-opacity', 'stroke', 'stroke-opacity' attributes for MarkersSymbolizer
  • Vector tile style errors are handled more gracefully, several error classes caused fatal exceptions previously
  • Better rendering quality for built-in markers/arrows if MarkersSymbolizer is used in vector style
  • Better logging of vector styling issues
  • Changed internal SDK timers to use monotonic clock, this fixes potential issues with time saving related clock changes
  • BitmapUtils::create* methods do not crash anymore when supplied with null bitmap arguments
  • Data sources that use string based tags: added support for {z} tag, this has same effect as {zoom} tag
  • Improved and fixed log messages for various NTMapView events on iOS
  • Made Android AssetUtils work after registerLicense is called but MapView is not yet instantiated
  • Fixed 'clicking on the sky' issues - SDK now filters such events out as they tend to create erratic movements
  • Fixed tile size underestimation in CompressedCacheTileDataSource, resulting in cache memory footprint exceeding cache capacity
  • Fixed potential crashes in case of failed vector tile decoding
  • Fixed MapPos point to line distance calculation
  • Implemented 'null' value support to CartoCSS parser
  • Added expression support for 'text-name'/'shield-name' parameters in CartoCSS
  • Fixed expression support in Mapnik XML parser for TextSymbolizer/ShieldSymbolizer
  • Fix renderer dead-lock issue with Xamarin/Android