2D Text
2D text is a label positioned at a specific location in 3D space that maintains a constant size and orientation on the screen, regardless of the zoom level or camera orientation. A single 2D text label is represented in the SDK with the Text2D class.
Text2D properties
Use the following properties to customise your Text2D object:
Set the text to display in the label. | |
Set the font style of the label to one of the following values: |
|
Set the point size of the label text. | |
Set the location of the label as an XYZ coordinate. | |
Set the colour of the text. | |
Set the horizontal alignment of your 2D text object to one of the following enum values: |
|
Set the vertical alignment of your 2D text object to one of the following enum values: |
2D text examples
The following examples demonstrate how to create and customise 2D text labels in a 3D view. You will learn how to create a basic Text2D object, modify its properties such as text content, size, and colour, and apply 2D text labels to specific points along a line to display relevant information.
Creating a Text2D object
The example below demonstrates creating a Text2D object and placing it at the origin.
from mapteksdk.project import Project from mapteksdk.data import Text2D project = Project() # Connect to default project object_path = "scrapbook/text_example" # Create Text with project.new(object_path, Text2D, overwrite=True) as text: text.text = 'hello world' text.location = [0, 0, 0] # Colours are R,G,B,A, where A is Alpha (255 = opaque) text.colour = [38, 128, 0, 255] # Light Green text.size = 100
Editing Text2D properties
The example below modifies the colour, size, text, and position of the text object created in the last example.
from mapteksdk.project import Project project = Project() # Connect to default project object_path = "scrapbook/text_example" # Create Text with project.edit(object_path) as text: text.text = 'new text' text.location = [50, 50, 50] # Colours are R,G,B,A, where A is Alpha (255 = opaque) text.colour = [255, 50, 50, 255] text.size = 150
Labelling point heights along a line with text
The following example demonstrates how to add 2D text at each point of a 3D polyline, labelling each point with its height.
from mapteksdk.project import Project from mapteksdk.data import Text2D, Polyline project = Project() # Connect to default project # Create a swirl line that rises in height line_path = "scrapbook/label_line_example" labels_path = "scrapbook/line_labels" with project.new(line_path, Polyline, overwrite=True) as line: line.points = [[10, 0, 0], [7, 5, 5], [9, 10, 10], [15, 12, 15], [20, 10, 20], [20, 5, 25], [15, 5, 30], [12, 8, 35]] # Delete labels container if it exists project.delete(labels_path) with project.read(line.id) as line: for label_id, point in enumerate(line.points): # Create text at point with project.new( "{}/{}".format(labels_path, label_id), Text2D, overwrite=True) as text: text.text = "{}m".format(point[2]) text.location = point text.colour = [point[2], 255, 255, 255] text.size = 40