Release date: 27th July 2017
Previous release: 4.3, 21st April 2017
Summary of changes
You can use any shape to clip the results of searches for map objects, by providing a geometry object as the clip region. Geometry objects can be created from map objects and rectangles.
The route and route segment classes no longer contain route instructions. You can create them easily from any route object using a new function. This makes route calculation much faster; sometimes you want to create a route and show it on the map, but not create the instructions, and the last step is rather expensive.
There is now a function to get all the string attributes of a map object as a suitable aggregate such as a std::map (C++) or a sorted dictionary (.NET).
You can set the colors of icons and label text using map object attributes, and you can create icons consisting of a character or characters from an
icon font; such a font is provided: MapkeyIcons.ttf. The new style sheet attributes are:
- In <label> or <extraLabel>, the attribute colorAttrib names a map object attribute providing the label text color as a standard color specification as used in style sheets: a name, hex number starting with #, etc. If present, this color overrides the normal label color.
- In <icon>, font attributes can be used, like font-size and font-style, to set the font of a text icon.
- In <icon>, the attribute 'color' sets the icon color, colorizing it if it is normally a multi-color SVG icon, or setting its color if it is a text icon.
- In <icon>, the attribute 'colorAttrib' names a map object attribute providing the icon color. It overrides 'color'.
- In <icon>, the attribute 'text' provides a character or characters to be used as a text icon. For example, the character ''
(using the XML representation of the Unicode private-use codepoint U+E054) is
a camp-site icon in the MapkeyIcons font which is now supplied with CartoType. - In <icon>, the attribute 'textAttrib' names a map object attribute providing the character or characters to be used as a text icon. It overrides 'text'.
Changes to the C++ API
Nearly all plain enum types are now enum class, and have shorter names. For example, EFollowModeNone is now TFollowMode::None. However, in the most common cases, backward-compatible definitions have been provided, as for example 'constexpr TFollowMode EFollowModeNone = TFollowMode::None;' .
Some functions which in practice always returned KErrorNone now do not return an error code and are of 'void' return type. For example, CFramework::EnableMapByHandle.
The bit values TNavigationData::ETimeValid, etc., now start with K and are TNavigationData::KTimeValid, etc. The E prefix for enumerated values is being phased out, and these values are in any case constants, which by convention take the prefix K.
TFindParam::iClipCoordType has been abolished, and iClip is now of type CGeometry; CGeometry has a coordinate type. This means that all searches can now use a non-rectangular clip area. You can create CGeometry objects from TRectFP and CMapObject, or create them by adding points manually.
The new function 'std::map<CString,CString> CMapObject::GetStringAttributes() const' returns all the string attributes of a map object.
The CRoute class no longer contains route instructions. Use this function to get route instructions for the current locale: 'CString CFramework::RouteInstructions(const CRoute& aRoute) const' .
Changes to the .NET API
FindParam.m_clip_coord_type has been abolished, and m_clip is now a reference to Geometry; Geometry has a coordinate type. This means that all searches can now use a non-rectangular clip area. You can create Geometry objects from Rect and MapObject, or create them by adding points manually.
MapObject.GetStringAttributes() now returns a sorted dictionary mapping keys to values. It formerly returned a list of strings, implicitly treated as key-value pairs.
The Route class no longer contains route instructions. Use Framework.GetRouteInstructions instead. It gets instructions for the current locale.
Some functions which in practice always returned ErrorNone now do not return an error code and are of 'void' return type. For example, Framework.EnableMapByHandle.
Changes to the Android API
FindParam.iClipCoordType has been abolished, and iClip is now a reference to Geometry; Geometry has a coordinate type. This means that all searches can now use a non-rectangular clip area. You can create Geometry objects from Rect and MapObject, or create them by adding points manually. The multi-argument find() function has changed in the same way: its aClipCoordType argument has been abolished, and aClip is now a reference to Geometry.
MapObject.getStringAttributes() now returns a TreeMap mapping keys to values. It formerly returned a list of strings, implicitly treated as key-value pairs. The former functionality is still available as getStringAttributesArray().
The Route class no longer contains route instructions. Use Framework.getRouteInstructions instead. It gets instructions for the current locale.
Some functions which in practice always returned no error (0) now do not return an error code and are of 'void' return type. For example, Framework.enableMap.
Changes to the iOS API
CartoTypeFindParam.clipCoordType has been abolished, and clip is now a reference to CartoTypeGeometry; CartoTypeGeometry has a coordinate type. This means that all searches can now use a non-rectangular clip area. You can create CartoTypeGeometry objects from CartoTypeRect and CartoTypeMapObject, or create them by adding points manually.
The new getStringAttributes method of CartoTypeMapObject returns an NSMutableDictionary mapping keys to values.
The CartoTypeRoute route class no longer has a getInstructions method. Use the getRouteInstructions method of CartoTypeFramework instead.
Some functions which in practice always returned CTErrorNone now do not return an error code and are of 'void' return type. For example, setStyleSheetVariable.
Changes to the Maps App
The Maps App now allows you to set the colors of icons, and optionally choose a custom icon from the supplied icon font, MapkeyIcons.ttf.