Display markers
The base class for the marker hierarchy is Marker. It encapsulates coordinates assigned to a specific part. Multiple coordinates can be added to the same marker and be separated into different parts. If no part is specified, the coordinates are added to a default part, indexed as 0. The coordinates are stored in a list-like structure, where you can specify their index explicitly. By default, the index is set to -1, meaning the coordinate will be appended to the end of the list.
// code used for displaying a marker with coordinates separated into different parts
final marker1 = Marker()
..add(Coordinates(latitude: 52.1459, longitude: 1.0613), part: 0)
..add(Coordinates(latitude: 52.14569, longitude: 1.0615), part: 0)
..add(Coordinates(latitude: 52.14585, longitude: 1.06186), part: 1)
..add(Coordinates(latitude: 52.14611, longitude: 1.06215), part: 1);
// code used for displaying a marker with coordinates added to the same part
final marker1 = Marker()
..add(Coordinates(latitude: 52.1459, longitude: 1.0613), part: 0)
..add(Coordinates(latitude: 52.14569, longitude: 1.0615), part: 0)
..add(Coordinates(latitude: 52.14585, longitude: 1.06186), part: 0)
..add(Coordinates(latitude: 52.14611, longitude: 1.06215), part: 0);
To display any type of marker on a map, it must first be added to a MarkerCollection. Creating a collection of markers requires providing a name and specifying the desired MarkerType enum as parameters for its constructor. The collection of markers displayed above used MarkerType.polyline, but it can also be MarkerType.point or MarkerType.polygon.
Once the MarkerCollection object has been populated, it must be added to the MapViewMarkerCollections field within the MapViewPreferences class. This can be accessed through the GemMapController, as shown below:
mapController.preferences.markers.add(markerCollection);
Point Type Marker
Visually represented as an icon, it is used to dynamically highlight user-defined locations. To display a point-type marker, the MarkerCollection to which the markers are added must be of the MarkerType.point type.
final marker = Marker()
..add(Coordinates(latitude: 52.1459, longitude: 1.0613), part: 0)
..add(Coordinates(latitude: 52.14569, longitude: 1.0615), part: 0)
..add(Coordinates(latitude: 52.14585, longitude: 1.06186), part: 1)
..add(Coordinates(latitude: 52.14611, longitude: 1.06215), part: 1);
final markerCollection = MarkerCollection(markerType: MarkerType.point, name: "myCollection");
markerCollection.add(marker);
mapController.preferences.markers.add(markerCollection);
controller.centerOnArea(markerCollection.area);
The result will be the following:
By default, point-type markers appear as blue circles up to a specific zoom level. When the zoom threshold is exceeded, they automatically cluster into orange circles, and at higher levels of clustering, they transition to red circles. Learn more at Marker Clustering
Polyline Type Marker
This type of marker is designed to display a continuous line consisting of one or more connected straight-line segments. To use it, ensure the MarkerCollection specifies markerType as MarkerType.polyline. It's important to note that markers can include multiple coordinates, which may or may not belong to the same part. Coordinates within the same part are connected by a polyline, which is red by default, while coordinates outside the part remain unconnected.
For more information, see Markers section.
Polygon Type Marker
This type of marker is designed to display a closed two-dimensional figure composed of straight-line segments that meet at their endpoints. To use it, ensure the MarkerRenderSettings specifies markerType as MarkerType.polygon.
To successfully create a polygon, at least three coordinates must be added to the same part. Otherwise, the result will be an open polyline rather than a closed shape.
Polygons can be customized using properties like polygonFillColor and polygonTexture. Additionally, since polygon edges are essentially polylines, you can further refine their appearance with polyline-related attributes such as polylineInnerColor, polylineOuterColor, polylineTexture, and more.
Marker Customizations
To customize the appearance of markers on GemMap, you can use the MarkerCollectionRenderSettings class.
This class is designed for customizing the appearance of individual markers. It includes various fields that can influence a marker's appearance, regardless of its type, as it provides customizable features for all marker types. For example:
- For markers of type
MarkerType.polyline, you can use fields such aspolylineInnerColor,polylineOuterColor,polylineInnerSize, andpolylineOuterSize. - For
MarkerType.polygon, thepolygonFillColor,polygonTexturefields are available, among others. - For
MarkerType.point, you can use fields such aslabelTextColor,labelTextSize,image,imageSize.
All dimensional sizes (imageSize, textSize, etc.) are measured in millimeters.
If customizations unrelated to a marker's specific type are applied—for example, using polylineInnerColor for a MarkerType.point



