Markers and controls
User interface elements that can be added to the map. The items in this section exist outside of the map's canvas
element.
Marker
src/ui/marker.jsCreates a marker component
Parameters
(Object?)
Name | Description |
---|---|
options.element HTMLElement? | DOM element to use as a marker. The default is a light blue, droplet-shaped SVG marker. |
options.anchor string default: 'center' | A string indicating the part of the Marker that should be positioned closest to the coordinate set via
Marker#setLngLat
.
Options are
'center'
,
'top'
,
'bottom'
,
'left'
,
'right'
,
'top-left'
,
'top-right'
,
'bottom-left'
, and
'bottom-right'
.
|
options.offset PointLike? | The offset in pixels as a PointLike object to apply relative to the element's center. Negatives indicate left and up. |
options.color string default: '#3FB1CE' | The color to use for the default marker if options.element is not provided. The default is light blue. |
options.scale number default: 1 | The scale to use for the default marker if options.element is not provided. The default scale corresponds to a height of
41px
and a width of
27px
.
|
options.draggable boolean default: false | A boolean indicating whether or not a marker is able to be dragged to a new position on the map. |
options.rotation number default: 0 | The rotation angle of the marker in degrees, relative to its respective Marker#rotationAlignment setting. A positive value will rotate the marker clockwise. |
options.pitchAlignment string default: 'auto' | map
aligns the
Marker
to the plane of the map.
viewport
aligns the
Marker
to the plane of the viewport.
auto
automatically matches the value of
rotationAlignment
.
|
options.rotationAlignment string default: 'auto' | map
aligns the
Marker
's rotation relative to the map, maintaining a bearing as the map rotates.
viewport
aligns the
Marker
's rotation relative to the viewport, agnostic to map rotations.
auto
is equivalent to
viewport
.
|
(Options?)
Example
var marker = new goongjs.Marker().setLngLat([30.5, 50.5]).addTo(map);
Instance Members
Events
Related
Popup
src/ui/popup.jsA popup component.
Parameters
(Object?)
Name | Description |
---|---|
options.closeButton boolean default: true | If
true
, a close button will appear in the
top right corner of the popup.
|
options.closeOnClick boolean default: true | If
true
, the popup will closed when the
map is clicked.
|
options.closeOnMove boolean default: false | If
true
, the popup will closed when the
map moves.
|
options.focusAfterOpen boolean default: true | If
true
, the popup will try to focus the
first focusable element inside the popup.
|
options.anchor string? | A string indicating the part of the Popup that should
be positioned closest to the coordinate set via
Popup#setLngLat
.
Options are
'center'
,
'top'
,
'bottom'
,
'left'
,
'right'
,
'top-left'
,
'top-right'
,
'bottom-left'
, and
'bottom-right'
. If unset the anchor will be
dynamically set to ensure the popup falls within the map container with a preference
for
'bottom'
.
|
options.offset (number | PointLike | Object)? | A pixel offset applied to the popup's location specified as: |
options.className string? | Space-separated CSS class names to add to popup container |
options.maxWidth string default: '240px' | A string that sets the CSS property of the popup's maximum width, eg
'300px'
.
To ensure the popup resizes to fit its content, set this property to
'none'
.
Available values can be found here:
https://developer.mozilla.org/en-US/docs/Web/CSS/max-width
|
Example
var markerHeight = 50, markerRadius = 10, linearOffset = 25;var popupOffsets = {'top': [0, 0],'top-left': [0,0],'top-right': [0,0],'bottom': [0, -markerHeight],'bottom-left': [linearOffset, (markerHeight - markerRadius + linearOffset) * -1],'bottom-right': [-linearOffset, (markerHeight - markerRadius + linearOffset) * -1],'left': [markerRadius, (markerHeight - markerRadius) * -1],'right': [-markerRadius, (markerHeight - markerRadius) * -1]};var popup = new goongjs.Popup({offset: popupOffsets, className: 'my-class'}).setLngLat(e.lngLat).setHTML("<h1>Hello World!</h1>").setMaxWidth("300px").addTo(map);
Instance Members
Events
Related
IControl
src/ui/map.jsInterface for interactive controls added to the map. This is a specification for implementers to model: it is not an exported method or class.
Controls must implement onAdd
and onRemove
, and must own an
element, which is often a div
element. To use Goong GL JS's
default control styling, add the mapboxgl-ctrl
class to your control's
node.
Example
// Control implemented as ES6 classclass HelloWorldControl {onAdd(map) {this._map = map;this._container = document.createElement('div');this._container.className = 'mapboxgl-ctrl';this._container.textContent = 'Hello, world';return this._container;} onRemove() {this._container.parentNode.removeChild(this._container);this._map = undefined;}} // Control implemented as ES5 prototypical classfunction HelloWorldControl() { } HelloWorldControl.prototype.onAdd = function(map) {this._map = map;this._container = document.createElement('div');this._container.className = 'mapboxgl-ctrl';this._container.textContent = 'Hello, world';return this._container;}; HelloWorldControl.prototype.onRemove = function () {this._container.parentNode.removeChild(this._container);this._map = undefined;};
Instance Members
NavigationControl
src/ui/control/navigation_control.jsA NavigationControl
control contains zoom buttons and a compass.
Parameters
(Object?)
Example
var nav = new goongjs.NavigationControl();map.addControl(nav, 'top-left');
Related
GeolocateControl
src/ui/control/geolocate_control.jsA GeolocateControl
control provides a button that uses the browser's geolocation
API to locate the user on the map.
Not all browsers support geolocation, and some users may disable the feature. Geolocation support for modern browsers including Chrome requires sites to be served over HTTPS. If geolocation support is not available, the GeolocateControl will not be visible.
The zoom level applied will depend on the accuracy of the geolocation provided by the device.
The GeolocateControl has two modes. If trackUserLocation
is false
(default) the control acts as a button, which when pressed will set the map's camera to target the user location. If the user moves, the map won't update. This is most suited for the desktop. If trackUserLocation
is true
the control acts as a toggle button that when active the user's location is actively monitored for changes. In this mode the GeolocateControl has three states:
- active - the map's camera automatically updates as the user's location changes, keeping the location dot in the center.
- passive - the user's location dot automatically updates, but the map's camera does not.
- disabled
Parameters
(Object?)
Name | Description |
---|---|
options.positionOptions Object default: {enableHighAccuracy:false,timeout:6000} | A Geolocation API PositionOptions object. |
options.fitBoundsOptions Object default: {maxZoom:15} | A
fitBounds
options object to use when the map is panned and zoomed to the user's location. The default is to use a
maxZoom
of 15 to limit how far the map will zoom in for very accurate locations.
|
options.trackUserLocation Object default: false | If
true
the Geolocate Control becomes a toggle button and when active the map will receive updates to the user's location as it changes.
|
options.showUserLocation Object default: true | By default a dot will be shown on the map at the user's location. Set to
false
to disable.
|
Example
map.addControl(new goongjs.GeolocateControl({positionOptions: {enableHighAccuracy: true},trackUserLocation: true}));
Instance Members
Events
Related
AttributionControl
src/ui/control/attribution_control.jsAn AttributionControl
control presents the map's attribution information.
Parameters
(Object?)
(default {}
)Name | Description |
---|---|
options.compact boolean? | If
true
force a compact attribution that shows the full attribution on mouse hover, or if
false
force the full attribution control. The default is a responsive attribution that collapses when the map is less than 640 pixels wide.
|
options.customAttribution (string | Array<string>)? | String or strings to show in addition to any other attributions. |
Example
var map = new goongjs.Map({attributionControl: false}).addControl(new goongjs.AttributionControl({compact: true}));
ScaleControl
src/ui/control/scale_control.jsA ScaleControl
control displays the ratio of a distance on the map to the corresponding distance on the ground.
Parameters
(Object?)
Example
var scale = new goongjs.ScaleControl({maxWidth: 80,unit: 'imperial'});map.addControl(scale); scale.setUnit('metric');
Instance Members
FullscreenControl
src/ui/control/fullscreen_control.jsA FullscreenControl
control contains a button for toggling the map in and out of fullscreen mode.
Parameters
(Object?)
Name | Description |
---|---|
options.container HTMLElement? | container
is the
compatible DOM element
which should be made full screen. By default, the map container element will be made full screen.
|
Example
map.addControl(new goongjs.FullscreenControl({container: document.querySelector('body')}));