Skip to main content

Polyline

The Polyline object displays a single polyline on the map.

Polyline extends Layer.

Example usage​

const polyline = G.polyline({
map: map,
path: [
{lat: 48.1, lng: 2},
{lat: 48.4, lng: 2.1},
{lat: 48.6, lng: 1.8},
]
});

Creating the Polyline object​

G.polyline(options?: PolylineValue): Polyline

There are a few ways that you can setup the Polyline object.

No parameters.

G.polyline(): Polyline

const polyline = G.polyline();

Pass the polyline options.

G.polyline(options: PolylineOptions): Polyline

ParameterTypeRequiredDescription
optionsPolylineOptionsYesThe options.
const polyline = G.polyline({
map: map,
path: [
{lat: 48.1, lng: 2},
{lat: 48.4, lng: 2.1},
{lat: 48.6, lng: 1.8},
]
});

Pass an existing Polyline object.

G.polyline(object: Polyline): Polyline

In this case the Polyline object is simply returned.

ParameterTypeRequiredDescription
objectPolylineYesA Polyline object.
const polyline = G.polyline(polylineObject);

Polyline value type​

Any methods that accept a polyline value accepts PolylineValue as the value type.

The PolylineValue can be one of the following values:

Custom data type​

You can attach an object of data to the polyline object to hold some custom data. An example usage would be to include some content that you want to show in a popup when a polyline is clicked.

The CustomData type represents this data. Essentially it's an object that can hold any type of data

type CustomData = {
[key: string]: any;
}

Polyline options​

Type PolylineOptions

OptionTypeDefaultDescription
clickablebooleantrueWhether the polyline handles click events.
dashedbooleanfalseWhether the polyline should display as a dashed line.
dashGapstring|number15pxThe gap between each dash if the polyline is dispayed as a dashed line. The gap can be in pixels or a percentage of the dashed line's length. If only a number is passed then it's converted to pixels.
dataCustomDataAn optional object to hold custom data to attach to the polyline object.
highlightPolylinePolylineValueThe polyline to show below the existing one to create a "highlight" effect when the mouse hovers over this polyline. If an options object is passed then it's merged with this polyline's options, so you only need to set the options that are different. See Highlighting polylines for more information.
iconsPolylineIconValue|PolylineIconValue[]Any icons to show on the polyline.
mapMapThe map to add the polyline to.
pathLatLngValue[]An array of LatLng values defining the path of the polyline on the map. Invalid values are ignored.
strokeColorstringThe polyline stroke color. All CSS3 colors are supported except for extended named colors.
strokeOpacitynumber|string1The polyline stroke opacity. The value should be between 0 and 1.0. A number string is converted to a number.
strokeWeightnumber|string1The polyline stroke width in pixels. A number string is converted to a number.
tooltipTooltipValueThe tooltip for the polyline. This will show when hovering over the polyline.
visiblebooleantrueWhether the polyline is visible.
zIndexnumber|stringThe zIndex compared to other polylines. A number string is converted to a number.

Events​

Below are the available polyline events. All of the Google Maps polyline events can be used, along with the ready event from this library.

You can use the plain text name for the event, or you can use the event constant.

If the polyline has a highlight polyline, any event listener added with on() is also added to the highlight polyline so that mouse events on it behave the same as on this polyline. The ready event is not added to the highlight polyline. Removing a listener with off() also removes it from the highlight polyline.

EventDescription
clickThe DOM click event is fired on the polyline.
contextmenuThe DOM contextmenu event is fired on the polyline.
dblclickThe DOM dblclick event is fired on the polyline.
dragFired repeatedly while the user drags the polyline.
dragendThe user stops dragging the polyline.
dragstartThe user starts dragging the polyline.
mousedownThe DOM mousedown event is fired on the polyline.
mousemoveThe DOM mousemove event is fired on the polyline.
mouseoutThe mouse leaves the polyline.
mouseoverThe mouse enters the polyline.
mouseupThe DOM mouseup event is fired on the polyline.
readyThe polyline is loaded and ready for use.
polyline.on('click', (e) => {
// Do something when the polyline is clicked
});

// You can use the event constant
polyline.on(G.PolylineEvents.MOUSE_OVER, (e) => {
// Do something
});

ready​

polyline.on('ready', () => {
// Do something
});

// You can use the event constant
polyline.on(G.PolylineEvents.READY, () => {
// Do something
});

// Or, use the onReady method
polyline.onReady(() => {
// Do something
});

Properties​

  • Properties inherited from Layer.
PropertyTypeDescription
clickablebooleanWhether the polyline handles click events.
dataCustomDataAn object that holds custom data to attach to the polyline object.
dashedbooleanWhether the polyline should display as a dashed line.
dashGapstring|numberThe gap between each dash if the polyline is dispayed as a dashed line. The gap can be in pixels or a percentage of the dashed line's length. If only a number is passed then it's converted to pixels. The value is always returned as a string, like '15px'.
highlightPolylinePolylineValueThe polyline to show below the existing one to create a "highlight" effect when the mouse hovers over this polyline. It can be set with a Polyline object or with polyline options, but it's always returned as a Polyline object. See Highlighting polylines for more information.
iconsPolylineIconValue|PolylineIconValue[]Any icons to show on the polyline. The value is always returned as an array of PolylineIcon objects.
mapMap|nullThe map to add the polyline to. Set to null to remove the polyline from the map.
pathLatLngValue[]An array of LatLng values defining the path of the polyline on the map.
strokeColorstringThe polyline stroke color. All CSS3 colors are supported except for extended named colors.
strokeOpacitynumber|stringThe polyline stroke opacity. The value should be between 0 and 1.0. The value is always returned as a number.
strokeWeightnumber|stringThe polyline stroke width in pixels. The value is always returned as a number.
visiblebooleanWhether the polyline is visible.
zIndexnumber|stringThe zIndex compared to other polylines. The value is always returned as a number.

Methods​

  • Methods inherited from Layer.
  • Methods inherited from Evented.
  • Methods inherited from Base.

clone​

clone(): Polyline

Clones the polyline object. The clone includes the polyline options, the custom data, the map, any attached tooltip, and a clone of the highlight polyline if one is set.

const copy = polyline.clone();

getData​

getData(key?: string): any

Gets either all the custom data attached to the polyline object or the value for a specific data key from the custom data object.

If the key is specified but the value doesn't exist in the custom data object, then null is returned.

ParameterTypeRequiredDescription
keystringNoThe object key to get a specific piece of data from the custom data obect. If this is not set then the entire custom data object is returned.

Get the entire data object.

const customData = polyline.getData();

Get a specific value from the custom data object.

const customValue = polyline.getData('dataKey');

hasZIndex​

hasZIndex(): boolean

Returns whether the polyline has a zIndex set.

if (polyline.hasZIndex()) {
// Do something
}

hide​

hide(): Polyline

Hide the polyline. If a "highlight polyline" is set then that is also hidden.

This sets the visible property to false. It does not remove the polyline from the map.

polyline.hide();

highlight​

highlight(options?: PolylineOptions): Polyline

Display the highlight polyline if it exists. See Highlighting polylines for more information.

ParameterTypeRequiredDescription
optionsPolylineOptionsThe polyline options to override the existing highlight polyline options.

Nothing happens if the polyline doesn't have a highlight polyline or if the polyline is hidden.

polyline.highlight();

You can override the current highlight options by passing in the options parameter. This allows you to override one or more of the following options:

  • clickable
  • dashed
  • dashGap
  • icons
  • strokeColor
  • strokeOpacity
  • strokeWeight
  • zIndex

When the polyline is unhighlighted, the original options will be restored.

polyline.highlight({strokeColor: 'blue'});

onReady​

onReady(callback: EventCallback): void

Callback for when the polyline is loaded and ready for use.

ParameterTypeRequiredDescription
callbackFunctionYesThe callback function that will be called when the event is dispatched.
polyline.onReady(() => {
// Do something
})

setDashed​

setDashed(dashed: boolean, dashGap?: string|number): Polyline

Sets whether the polyline should be a dashed line.

This also lets you set the dash gap at the same time. The dash gap is only set if dashed is true.

ParameterTypeRequiredDescription
dashedbooleanYesWhether the polyline should display as a dashed line.
dashGapstring|numberThe gap between each dash if the polyline is dispayed as a dashed line. The gap can be in pixels or a percentage of the dashed line's length. If only a number is passed then it's converted to pixels.
// Change a dashed line to a solid line.
polyline.setDashed(false);

// Set a polyline to be dashed
polyline.setDashed(true);

// Set a polyline to be dashed and set the dash gap to 20px
polyline.setDashed(true, 20);

setDashGap​

setDashGap(gap: string|number): Polyline

Set the gap between dashes when a polyline is displayed as dashes.

ParameterTypeRequiredDescription
gapstring|numberYesThe gap between each dash if the polyline is dispayed as a dashed line. The gap can be in pixels or a percentage of the dashed line's length. If only a number is passed then it's converted to pixels.
// Pass a number only. This is the same as passing '20px'
polyline.setDashGap(20);

// Set a specific pixel value
polyline.setDashGap('18px');

// Set a percentage of the dashed line's length
polyline.setDashGap('10%');

setHighlightPolyline​

setHighlightPolyline(value: PolylineOptions | Polyline): Polyline

Set up a version of the polyline to show when hovering over the polyline to give it a "highlight" effect. See Highlighting polylines for more information.

ParameterTypeRequiredDescription
valuePolylineValueYesThe highlight polyline options or the highlight polyline object. If options are passed then they are merged with this polyline's options, so you only need to set the options that are different.
polyline.setHighlightPolyline({
strokeColor: 'purple',
strokeOpacity: 0.5,
strokeWeight: 4,
});

setIcons​

setIcons(value: PolylineIconValue|PolylineIconValue[]): Polyline

Set the icons for the polyline.

You can pass a single icon value or an array of icon values. Each icon value can be an object containing the icon options or a SvgSymbol object.

ParameterTypeRequiredDescription
valuePolylineIconValue|PolylineIconValue[]YesAny icons to show on the polyline.
polyline.setIcons([
G.svgSymbol({
path: G.SymbolPath.CIRCLE,
strokeColor: '#000000',
scale: 2
}),
{
icon: {
path: "M -2,-2 2,2 M 2,-2 -2,2",
strokeColor: "#22229B",
strokeWeight: 4,
},
offset: '100%'
}
]);

setMap​

setMap(value: Map|null, isVisible?: boolean): Promise<Polyline>

Add the polyline to the map and display it. Pass null to remove the polyline from the map.

If the polyline has a highlight polyline then the map is set on it as well.

ParameterTypeRequiredDescription
valueMap|nullYesThe map object. Set to null to remove the polyline from the map.
isVisiblebooleanWhether the polyline is visible on the map. Defaults to true.
polyline.setMap(map);

// Set the map but don't show the polyline
polyline.setMap(map, false);

// Remove the polyline from the map
polyline.setMap(null);

setOptions​

setOptions(options: PolylineOptions): Polyline

Set the options for the polyline.

ParameterTypeRequiredDescription
optionsPolylineOptionsYesThe polyline options.
polyline.setOptions({
path: path,
map: map,
strokeColor: 'red',
strokeWeight: 3,
zIndex: 2,
});

setPath​

setPath(path: LatLngValue[]): Polyline

Set the path of the polyline.

ParameterTypeRequiredDescription
pathLatLngValue[]YesAn array of LatLng values defining the path of the polyline on the map.
polyline.setPath([
{lat: 48.1, lng: 2},
{lat: 48.4, lng: 2.1},
{lat: 48.6, lng: 1.8},
]);

setStrokeColor​

setStrokeColor(strokeColor: string): Polyline

Set the SVG stroke color. All CSS3 colors are supported except for extended named colors.

ParameterTypeRequiredDescription
strokeColorstringYesThe color value. All CSS3 colors are supported except for extended named colors.
polyline.setStrokeColor('#ff0000');

setStrokeOpacity​

setStrokeOpacity(strokeOpacity: number|string): Polyline

Set the opacity of the stroke.

ParameterTypeRequiredDescription
strokeOpacitynumber|stringYesThe stroke opacity value between 0 and 1.0. A number string is converted to a number.
polyline.setStrokeOpacity(0.5);

setStrokeWeight​

setStrokeWeight(strokeWeight: number|string): Polyline

Set the weight of the stroke in pixels.

ParameterTypeRequiredDescription
strokeWeightnumber|stringYesThe stroke weight value. A number string is converted to a number.
polyline.setStrokeWeight(2);

setVisible​

setVisible(visible: boolean): Polyline

Set whether the polyline is visible on the map.

ParameterTypeRequiredDescription
visiblebooleanYesWhether the polyline is visible on the map.
polyline.setVisible(true);
polyline.setVisible(false);

show​

show(map?: Map): Promise<Polyline>

Show the polyline on the map. This will also set the map object if it's passed.

You don't need to pass the map object if the polyline has already been assigned to the map.

ParameterTypeRequiredDescription
mapMapThe map object.
polyline.show();
polyline.show(map);

toGoogle​

toGoogle(): Promise<google.maps.Polyline>

Returns the Google Maps Polyline object. It will be a promise value.

polyline.toGoogle().then((googlePolyline) => {
// Do something with the Google polyline object
});

unhighlight​

unhighlight(): Polyline

Hide the highlight polyline if it exists. See Highlighting polylines for more information.

polyline.unhighlight();