This release, 8.4, was made on 20th February 2023 and is based on commit 8.4-1-gcb08c572d in the Git repository.

The previous release, 8.2, was made on 9th December 2022 and was based on commit 8.2-57-g51a9fa561 in the Git repository.

mapinfo is the new name for ctm1_info

The tool to describe the contents of a CartoType map file (a CTM1 file) is now called mapinfo, not ctm1_info. The new name is more descriptive and easier to type.

mapinfo usage and command line options are now:

usage :mapinfo { -option1 ... -optionN } <CartoType map file (CTM1 file) name>
    options:
        -d<layer>{,<condition>}: dumps all map objects in a layer,
            optionally using a condition to select objects
        -D<layer>{,<condition>}: like -d but also dumps coordinates
        -a<layer>{,<condition>}: like -d but gives combined area and length of objects only
        -e<W,S,E,N> or <zoom,X,Y>: applies an extent to following -d or -D options
        -f<building>,<street>,<city>{,<postcode>}: finds addresses
        -i: uses imperial units (miles, yards, acres) instead of metric units (kilometres, metres, hectares)
        -n: no info (for use with -d, etc.) does not list global information, tables or layers
        -v: verbose: lists layers
        -V: more verbose: lists layers and low-res layers

Major standard style sheet changes

These changes affect the standard style sheet, style/standard.ctstyle. Users are free to use the standard style sheet in part or in whole, or use their own custom style sheets.

Cities and towns now have icons in the form of five-pointed stars at small scales. The icon for a capital city is a five-pointed star in a circle.

Routes are now drawn at large scales using a smooth envelope without the former kinks and overlaps, and at very large scales arrows are drawn in the direction of travel.

Country borders are drawn using as an inset semi-transparent colour, using a different colour for adjacent countries, when Natural Earth data is used containing the _MAPCOLOR7 attribute.

Major roads are no longer loaded at scales smaller than 1:15 million.

Style sheet XML schema changes

The <repeatedSymbol>, <oneWayArrow>, <startSymbol> or <endSymbol> element can now have a 'color' attribute. The specified color, if the attribute is present, is used to colorize any SVG icon used as a repeated symbol.

Polygon borders can be offset using the 'borderOffset' attribute in the <shape> element, which takes a dimension. To offset the border so that it is precisely inset in the polygon, use 'inset="yes"'.

The <icon> element has a new optional attribute, 'needsLabel'. If 'needsLabel' is 'true' or 'yes' the icon is drawn only if the label is present and can be drawn without overlap.

makemap standard import rules changes

Note that you can examine the standard import rules using the command 'makemap -writerules'.

When importing OSM data, the 'short_name' is now imported into all objects.

If the file land_polygons.shp (the standard file used for coastlines in combination with OSM data) is imported, all objects are now written to the 'outline' layer.

Most Natural Earth data files now have standard import rules, allowing Natural Earth data to be used easily and consistently.

Changes common to all APIs

Added a Framework function to insert elliptical map objects. The C++ function is

Result Framework::InsertEllipseMapObject(uint32_t aMapHandle,const String& aLayerName,
double aCenterX,double aCenterY,CoordType aCenterCoordType,double aRadiusX,double aRadiusY,CoordType aRadiusCoordType,double aRotationDegrees,
const String& aStringAttributes,FeatureInfo aFeatureInfo,uint64_t& aId,bool aReplace);

and other platform APIs are very similar except for iOS, where extra radiusX and radiusY properties have been added to the CartoTypeMapObjectParam class.

Added a function to return points along a great circle between to points given in degrees longitude and latitude. The C++ function is

std::vector<PointFP> GreatCircleLine(const PointFP& aStartPoint,const PointFP& aEndPoint,double aDistanceInMetres)

The NearestRoadInfo class, used by FindNearestRoad to return information, has a new member, SideOfRoad, which supplies
the side of the road on which the selected point lies, or SideOfRoad::None if the vehicle heading is not supplied.
It is Left if the heading vector is left of a vector from the chosen point to the nearest point on the road, otherwise Right.
Another way to understand it is: if the road as seen by the driver of the vehicle is to the left, the side of the road is Right, and vice versa.

Specific C++ API changes

There is a new function to create a MapRenderer object, trapping any errors so that they can be reported. In particular this allows desktop apps like the CartoType Maps App to attempt to load a large number of maps without crashing when there are no more file handles available. The new function is:

static std::unique_ptr<MapRenderer> New(Result& aError,Framework& aFramework,const void* aNativeWindow = nullptr);

specific .NET API changes

None

Specific UWP API changes

None

Specific Android API changes

Added the missing Legend methods setMainStyleSheet(), setLabelWrapWidth(), setDiagramColor(), setPolygonRotation(), hasTurnInstruction(),
setTurnInstruction(), and turnInstruction().

Specific iOS API changes

Added the CartoTypeMapObjectParam properties radiusX, radiusY and rotationDegrees to support the insertion of elliptical map objects.

Added the missing Legend functions setMainStyleSheet, setLabelWrapWidth, setDiagramColor, setPolygonRotation, hasTurnInstruction,
setTurnInstruction, and turnInstruction.