# Class MapComponent

java.lang.Object
com.codename1.ui.Component
com.codename1.ui.Container
com.codename1.maps.MapComponent

All Implemented Interfaces:
  `Animation, Editable, StyleListener, Iterable<Component>`

public class MapComponent extends Container
All communication with the map and layers should be done in WGS84, it takes care of coordinates transformation.

- ## Field Summary

  ### Fields inherited from class Component

  `BASELINE, BOTTOM, BRB_CENTER_OFFSET, BRB_CONSTANT_ASCENT, BRB_CONSTANT_DESCENT, BRB_OTHER, CENTER, CROSSHAIR_CURSOR, DEFAULT_CURSOR, DRAG_REGION_IMMEDIATELY_DRAG_X, DRAG_REGION_IMMEDIATELY_DRAG_XY, DRAG_REGION_IMMEDIATELY_DRAG_Y, DRAG_REGION_LIKELY_DRAG_X, DRAG_REGION_LIKELY_DRAG_XY, DRAG_REGION_LIKELY_DRAG_Y, DRAG_REGION_NOT_DRAGGABLE, DRAG_REGION_POSSIBLE_DRAG_X, DRAG_REGION_POSSIBLE_DRAG_XY, DRAG_REGION_POSSIBLE_DRAG_Y, E_RESIZE_CURSOR, HAND_CURSOR, LEFT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NW_RESIZE_CURSOR, RIGHT, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, TOP, W_RESIZE_CURSOR, WAIT_CURSOR`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `MapComponent()`
  Empty constructor creates a map with OpenStreetMapProvider on the Last known Location of the LocationManager
  `MapComponent(MapProvider provider)`
  Constructor with a given provider
  `MapComponent(MapProvider provider, Location centerPosition, int zoomLevel)`
  Constructor
  `MapComponent(MapProvider provider, Location centerPosition, int zoomLevel, boolean cacheEnabled)`
  Constructor
  `MapComponent(MapProvider provider, Coord centerPosition, int zoomLevel)`
  Constructor
  `MapComponent(MapProvider provider, Coord centerPosition, int zoomLevel, boolean cacheEnabled)`
  Constructor

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addLayer(Layer layer)`
  Adds a layer to the map
  `void`
  `addLayer(Layer layer, int minZoomLevel, int maxZoomLevel)`
  Adds a layer to the map
  `void`
  `addMapListener(MapListener listener)`
  Adds a listener to map panning/zooming
  `protected Dimension`
  `calcPreferredSize()`
  Calculates the preferred size based on component content.
  `Coord`
  `center()`
  Gets the center of the map.
  `static long`
  `distance(double latitude1, double longitude1, double latitude2, double longitude2)`
  Returns the distance between 2 points in meters
  `protected void`
  `focusGained()`
  Callback allowing a developer to track when the component gains focus
  `Coord`
  `getCenter()`
  Gets the center location of the map in WGS84 format.
  `Coord`
  `getCoordFromPosition(int x, int y)`
  Gets the Coord location on the map from a x, y position.
  `Layer`
  `getLayerAt(int index)`
  Returns Layer at index
  `int`
  `getLayersConut()`
  Returns layers count
  `int`
  `getMaxZoomLevel()`
  Returns the max zoom level of the map
  `int`
  `getMinZoomLevel()`
  Returns the min zoom level of the map
  `Point`
  `getPointFromCoord(Coord coord)`
  Gets the screen coordinates of a specific Coord
  `String[]`
  `getPropertyNames()`
  A component may expose mutable property names for a UI designer to manipulate, this API is designed for usage internally by the GUI builder code
  `Class[]`
  `getPropertyTypes()`
  Matches the property names method (see that method for further details).
  `Object`
  `getPropertyValue(String name)`
  Returns the current value of the property name, this method is used by the GUI builder
  `MapProvider`
  `getProvider()`
  Gets the map provider
  `int`
  `getZoomLevel()`
  Returns the current zoom level of the map.
  `protected boolean`
  `isDownKey(int keyCode)`
  Returns true if this is a down keycode
  `protected boolean`
  `isLeftKey(int keyCode)`
  Checks if key code is left keycode.
  `protected boolean`
  `isRightKey(int keyCode)`
  Returns true if this is a right keycode
  `protected boolean`
  `isUpKey(int keyCode)`
  Returns true if this is a up keycode
  `protected boolean`
  `isZoomInKey(int keyCode)`
  Returns true if this is a zoom in keycode
  `protected boolean`
  `isZoomOutKey(int keyCode)`
  Returns true if this is a zoom out keycode
  `protected boolean`
  `isZoomToLayersKey(int keyCode)`
  Returns true if this is a zoom to layers keycode
  `void`
  `keyPressed(int keyCode)`
  If this Component is focused, the key pressed event will call this method
  `protected void`
  `laidOut()`
  This is a callback method to inform the Component when it's been laidout on the parent Container
  `void`
  `moveDown()`
  move the map 25% down
  `void`
  `moveLeft()`
  move the map 25% left
  `void`
  `moveRight()`
  move the map 25% right
  `void`
  `moveUp()`
  move the map 25% up
  `void`
  `paintBackground(Graphics g)`
  This method paints the Component background, it should be overriden by subclasses to perform custom background drawing.
  `void`
  `pointerDragged(int[] x, int[] y)`
  If this Component is focused, the pointer dragged event will call this method
  `void`
  `pointerDragged(int x, int y)`
  If this Component is focused, the pointer dragged event will call this method
  `void`
  `pointerPressed(int x, int y)`
  If this Component is focused, the pointer pressed event will call this method
  `void`
  `pointerReleased(int x, int y)`
  If this Component is focused, the pointer released event will call this method
  `protected void`
  `pointerTapped(int x, int y, int tapCount)`
  `void`
  `removeAllLayers()`
  Removes all layers from the map
  `void`
  `removeLayer(Layer layer)`
  Removes a Layer from the map
  `void`
  `removeMapListener(MapListener listener)`
  Removes the map listener callback
  `void`
  `repaint()`
  Repaint this Component, the repaint call causes a callback of the paint method on the event dispatch thread.
  `String`
  `setPropertyValue(String name, Object value)`
  Sets a new value to the given property, returns an error message if failed and null if successful.
  `void`
  `setZoomLevel(int zoom)`
  Sets the current zoom level of the map.
  `protected boolean`
  `shouldBlockSideSwipe()`
  A component that might need side swipe such as the slider could block it from being used for some other purpose when on top of said component.
  `void`
  `zoomIn()`
  zoom in the map one level if possible
  `void`
  `zoomOut()`
  zoom out the map one level if possible
  `void`
  `zoomTo(BoundingBox boundingBox)`
  Zoom the map the the giving bounding box
  `void`
  `zoomTo(Coord coord, int zoomLevel)`
  Zoom map to the center of the given coordinate with the given zoom level
  `void`
  `zoomToLayers()`
  zoom map to largest zoom while all Layers are contained

  ### Methods inherited from class Container

  `add, add, add, add, add, add, addAll, addComponent, addComponent, addComponent, addComponent, animateHierarchy, animateHierarchyAndWait, animateHierarchyFade, animateHierarchyFadeAndWait, animateLayout, animateLayoutAndWait, animateLayoutFade, animateLayoutFadeAndWait, animateUnlayout, animateUnlayoutAndWait, applyRTL, cancelRepaints, clearClientProperties, constrainHeightWhenScrollable, constrainWidthWhenScrollable, contains, createAnimateHierarchy, createAnimateHierarchyFade, createAnimateLayout, createAnimateLayoutFade, createAnimateLayoutFadeAndWait, createAnimateMotion, createAnimateUnlayout, createReplaceTransition, dragInitiated, drop, encloseIn, encloseIn, findDropTargetAt, findFirstFocusable, fireClicked, flushReplace, forceRevalidate, getBottomGap, getChildrenAsList, getClosestComponentTo, getComponentAt, getComponentAt, getComponentCount, getComponentIndex, getGridPosX, getGridPosY, getLayout, getLayoutHeight, getLayoutWidth, getLeadComponent, getLeadParent, getResponderAt, getSafeAreaRoot, getScrollIncrement, getSideGap, getUIManager, initLaf, invalidate, isEnabled, isSafeArea, isSafeAreaRoot, isScrollableX, isScrollableY, isSelectableInteraction, isSurface, iterator, iterator, keyReleased, layoutContainer, morph, morphAndWait, paint, paintComponentBackground, paintGlass, paramString, refreshTheme, removeAll, removeComponent, replace, replace, replaceAndWait, replaceAndWait, replaceAndWait, revalidate, revalidateLater, revalidateWithAnimationSafety, scrollComponentToVisible, setCellRenderer, setEnabled, setLayout, setLeadComponent, setSafeArea, setSafeAreaRoot, setScrollable, setScrollableX, setScrollableY, setScrollIncrement, setShouldCalcPreferredSize, setShouldLayout, setUIManager, updateTabIndices`

  ### Methods inherited from class Component

  `addDragFinishedListener, addDragOverListener, addDropListener, addFocusListener, addLongPressListener, addPointerDraggedListener, addPointerPressedListener, addPointerReleasedListener, addPullToRefresh, addScrollListener, addStateChangeListener, animate, announceForAccessibility, bindProperty, blocksSideSwipe, calcScrollSize, contains, containsOrOwns, createStyleAnimation, deinitialize, deinitializeCustomStyle, dragEnter, dragExit, dragFinished, draggingOver, drawDraggedImage, focusLost, getAbsoluteX, getAbsoluteY, getAccessibilityText, getAllStyles, getAnimationManager, getBaseline, getBaselineResizeBehavior, getBindablePropertyNames, getBindablePropertyTypes, getBorder, getBoundPropertyValue, getBounds, getBounds, getClientProperty, getCloudBoundProperty, getCloudDestinationProperty, getComponentForm, getComponentState, getCursor, getDefaultDragTransparency, getDirtyRegion, getDisabledStyle, getDraggedx, getDraggedy, getDragImage, getDragRegionStatus, getDragSpeed, getDragTransparency, getEditingDelegate, getHeight, getInlineAllStyles, getInlineDisabledStyles, getInlinePressedStyles, getInlineSelectedStyles, getInlineStylesTheme, getInlineUnselectedStyles, getInnerHeight, getInnerPreferredH, getInnerPreferredW, getInnerWidth, getInnerX, getInnerY, getLabelForComponent, getName, getNativeOverlay, getNextFocusDown, getNextFocusLeft, getNextFocusRight, getNextFocusUp, getOuterHeight, getOuterPreferredH, getOuterPreferredW, getOuterWidth, getOuterX, getOuterY, getOwner, getParent, getPreferredH, getPreferredSize, getPreferredSizeStr, getPreferredTabIndex, getPreferredW, getPressedStyle, getPropertyTypeNames, getSameHeight, getSameWidth, getScrollable, getScrollAnimationSpeed, getScrollDimension, getScrollOpacity, getScrollOpacityChangeSpeed, getScrollX, getScrollY, getSelectCommandText, getSelectedRect, getSelectedStyle, getStyle, getTabIndex, getTensileLength, getTextSelectionSupport, getTooltip, getUIID, getUnselectedStyle, getVisibleBounds, getVisibleBounds, getWidth, getX, getY, growShrink, handlesInput, hasFixedPreferredSize, hasFocus, hideNativeOverlay, initComponent, initCustomStyle, initDisabledStyle, initPressedStyle, initSelectedStyle, initUnselectedStyle, installDefaultPainter, isAlwaysTensile, isBlockLead, isCellRenderer, isChildOf, isDragActivated, isDragAndDropOperation, isDraggable, isDragRegion, isDropTarget, isEditable, isEditing, isFlatten, isFocusable, isGrabsPointerEvents, isHidden, isHidden, isHideInLandscape, isHideInPortrait, isHScrollThumbGrabbed, isHScrollThumbHover, isIgnorePointerEvents, isInClippingRegion, isInitialized, isOpaque, isOwnedBy, isPinchBlocksDragAndDrop, isRippleEffect, isRTL, isScrollable, isScrollVisible, isSetCursorSupported, isSmoothScrolling, isSnapToGrid, isStickyDrag, isTactileTouch, isTactileTouch, isTensileDragEnabled, isTraversable, isVisible, isVScrollThumbGrabbed, isVScrollThumbHover, keyRepeated, longKeyPress, longPointerPress, onScrollX, onScrollY, onSetFocusable, paintBackgrounds, paintBorder, paintBorderBackground, paintComponent, paintComponent, paintIntersectingComponentsAbove, paintLock, paintLockRelease, paintRippleOverlay, paintScrollbars, paintScrollbarX, paintScrollbarY, paintShadows, parsePreferredSize, pinch, pinch, pinchReleased, pointerHover, pointerHoverPressed, pointerHoverReleased, pointerPressed, pointerReleased, putClientProperty, refreshTheme, refreshTheme, remove, removeDragFinishedListener, removeDragOverListener, removeDropListener, removeFocusListener, removeLongPressListener, removePointerDraggedListener, removePointerPressedListener, removePointerReleasedListener, removeScrollListener, removeStateChangeListener, repaint, requestFocus, resetFocusable, respondsToPointerEvents, scrollRectToVisible, scrollRectToVisible, setAccessibilityText, setAlwaysTensile, setBlockLead, setBoundPropertyValue, setCloudBoundProperty, setCloudDestinationProperty, setComponentState, setCursor, setDefaultDragTransparency, setDirtyRegion, setDisabledStyle, setDraggable, setDragTransparency, setDropTarget, setEditingDelegate, setFlatten, setFocus, setFocusable, setGrabsPointerEvents, setHandlesInput, setHeight, setHidden, setHidden, setHideInLandscape, setHideInPortrait, setHorizontalScrollBounds, setIgnorePointerEvents, setInitialized, setInlineAllStyles, setInlineDisabledStyles, setInlinePressedStyles, setInlineSelectedStyles, setInlineStylesTheme, setInlineUnselectedStyles, setIsScrollVisible, setLabelForComponent, setName, setNextFocusDown, setNextFocusLeft, setNextFocusRight, setNextFocusUp, setOpaque, setOwner, setPinchBlocksDragAndDrop, setPreferredH, setPreferredSize, setPreferredSizeStr, setPreferredTabIndex, setPreferredW, setPressedStyle, setPullToRefresh, setRippleEffect, setRTL, setSameHeight, setSameSize, setSameWidth, setScrollAnimationSpeed, setScrollOpacityChangeSpeed, setScrollSize, setScrollVisible, setScrollX, setScrollY, setSelectCommandText, setSelectedStyle, setSize, setSmoothScrolling, setSnapToGrid, setTabIndex, setTactileTouch, setTensileDragEnabled, setTensileLength, setTooltip, setTraversable, setUIID, setUIID, setUIIDFinal, setUnselectedStyle, setVerticalScrollBounds, setVisible, setWidth, setX, setY, shouldBlockSideSwipeLeft, shouldBlockSideSwipeRight, shouldRenderComponentSelection, showNativeOverlay, startEditingAsync, stopEditing, stripMarginAndPadding, styleChanged, toImage, toString, unbindProperty, updateNativeOverlay, visibleBoundsContains`

  ### Methods inherited from class Object

  `clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

  ### Methods inherited from interface Iterable

  `forEach`

- ## Constructor Details

  - ### MapComponent

    public MapComponent()
    Empty constructor creates a map with OpenStreetMapProvider on the Last known Location of the LocationManager

  - ### MapComponent

    public MapComponent(MapProvider provider)

    Constructor with a given provider

    ###### Parameters

    - `provider`: map provider

  - ### MapComponent

    public MapComponent(MapProvider provider, Location centerPosition, int zoomLevel)

    Constructor

    ###### Parameters

    - `provider`: map provider

    - `centerPosition`: center position

    - `zoomLevel`: zoom level

  - ### MapComponent

    public MapComponent(MapProvider provider, Location centerPosition, int zoomLevel, boolean cacheEnabled)

    Constructor

    ###### Parameters

    - `provider`: map provider

    - `centerPosition`: center position

    - `zoomLevel`: zoom level

    - `cacheEnabled`: is cache enabled

  - ### MapComponent

    public MapComponent(MapProvider provider, Coord centerPosition, int zoomLevel)

    Constructor

    ###### Parameters

    - `provider`: map provider

    - `centerPosition`: center position

    - `zoomLevel`: zoom level

  - ### MapComponent

    public MapComponent(MapProvider provider, Coord centerPosition, int zoomLevel, boolean cacheEnabled)

    Constructor

    ###### Parameters

    - `provider`: map provider

    - `centerPosition`: center position

    - `zoomLevel`: zoom level

    - `cacheEnabled`: is cache enabled

- ## Method Details

  - ### distance

    public static long distance(double latitude1, double longitude1, double latitude2, double longitude2)

    Returns the distance between 2 points in meters

    ###### Parameters

    - `latitude1`

    - `longitude1`

    - `latitude2`

    - `longitude2`

    ###### Returns

    distance in meters

  - ### paintBackground

    public void paintBackground(Graphics g)

    This method paints the Component background, it should be overriden by subclasses to perform custom background drawing.

    ###### Parameters

    - `g`: the component graphics
    Overrides:
      `paintBackground` in class `Component`

  - ### laidOut

    protected void laidOut()
    This is a callback method to inform the Component when it's been laidout on the parent Container
    Overrides:
      `laidOut` in class `Component`

  - ### shouldBlockSideSwipe

    protected boolean shouldBlockSideSwipe()
    A component that might need side swipe such as the slider could block it from being used for some other purpose when on top of said component.
    Overrides:
      `shouldBlockSideSwipe` in class `Component`

  - ### calcPreferredSize

    protected Dimension calcPreferredSize()

    Calculates the preferred size based on component content. This method is invoked lazily by getPreferred size.

    ###### Returns

    the calculated preferred size based on component content

    Overrides:
      `calcPreferredSize` in class `Container`

  - ### focusGained

    protected void focusGained()
    Callback allowing a developer to track when the component gains focus
    Overrides:
      `focusGained` in class `Component`

  - ### pointerDragged

    public void pointerDragged(int x, int y)

    If this Component is focused, the pointer dragged event will call this method

    ###### Parameters

    - `x`: the pointer x coordinate

    - `y`: the pointer y coordinate

    Overrides:
      `pointerDragged` in class `Component`

  - ### pointerPressed

    public void pointerPressed(int x, int y)

    If this Component is focused, the pointer pressed event will call this method

    ###### Parameters

    - `x`: the pointer x coordinate

    - `y`: the pointer y coordinate

    Overrides:
      `pointerPressed` in class `Container`

  - ### pointerDragged

    public void pointerDragged(int[] x, int[] y)

    If this Component is focused, the pointer dragged event will call this method

    ###### Parameters

    - `x`: the pointer x coordinate

    - `y`: the pointer y coordinate

    Overrides:
      `pointerDragged` in class `Component`

  - ### pointerTapped

    protected void pointerTapped(int x, int y, int tapCount)

  - ### pointerReleased

    public void pointerReleased(int x, int y)

    If this Component is focused, the pointer released event will call this method

    ###### Parameters

    - `x`: the pointer x coordinate

    - `y`: the pointer y coordinate

    Overrides:
      `pointerReleased` in class `Component`

  - ### getCoordFromPosition

    public Coord getCoordFromPosition(int x, int y)

    Gets the Coord location on the map from a x, y position.

    ###### Parameters

    - `x`: X-coordinate

    - `y`: Y-coordinate

    ###### Returns

    a Coord Object.

  - ### getPointFromCoord

    public Point getPointFromCoord(Coord coord)

    Gets the screen coordinates of a specific Coord

    ###### Parameters

    - `coord`: a lat,lon location

    ###### Returns

    the Point of the coordinate on the Map

  - ### keyPressed

    public void keyPressed(int keyCode)

    If this Component is focused, the key pressed event will call this method

    ###### Parameters

    - `keyCode`: the key code value to indicate a physical key.
    Overrides:
      `keyPressed` in class `Container`

  - ### addLayer

    public void addLayer(Layer layer)

    Adds a layer to the map

    ###### Parameters

    - `layer`: to add

  - ### addLayer

    public void addLayer(Layer layer, int minZoomLevel, int maxZoomLevel)

    Adds a layer to the map

    ###### Parameters

    - `layer`: to add

    - `minZoomLevel`: min zoom level of this Layer

    - `maxZoomLevel`: max zoom level of this Layer

  - ### removeLayer

    public void removeLayer(Layer layer)

    Removes a Layer from the map

    ###### Parameters

    - `layer`: to remove

  - ### removeAllLayers

    public void removeAllLayers()
    Removes all layers from the map

  - ### getLayersConut

    public int getLayersConut()

    Returns layers count

    ###### Returns

    The number of layers.

  - ### getLayerAt

    public Layer getLayerAt(int index)

    Returns Layer at index

    ###### Parameters

    - `index`: the index of the layer

    ###### Returns

    The layer at the given index.

    ###### Throws

    - `ArrayIndexOutOfBoundsException`: @throws ArrayIndexOutOfBoundsException - if the index is out of range (index < 0 || index >= size())

  - ### getProvider

    public MapProvider getProvider()

    Gets the map provider

    ###### Returns

    the map provider

  - ### repaint

    public void repaint()
    Description copied from class: `Component`

    Repaint this Component, the repaint call causes a callback of the paint method on the event dispatch thread.

    ###### See also

    - Display
    Overrides:
      `repaint` in class `Component`

  - ### moveLeft

    public void moveLeft()
    move the map 25% left

  - ### moveRight

    public void moveRight()
    move the map 25% right

  - ### moveUp

    public void moveUp()
    move the map 25% up

  - ### moveDown

    public void moveDown()
    move the map 25% down

  - ### zoomIn

    public void zoomIn()
    zoom in the map one level if possible

  - ### zoomOut

    public void zoomOut()
    zoom out the map one level if possible

  - ### zoomTo

    public void zoomTo(BoundingBox boundingBox)

    Zoom the map the the giving bounding box

    ###### Parameters

    - `boundingBox`: to zoom to

    ###### Throws

    - `IllegalArgumentException`: if the boundingBox is not wg84 format

  - ### zoomTo

    public void zoomTo(Coord coord, int zoomLevel)

    Zoom map to the center of the given coordinate with the given zoom level

    ###### Parameters

    - `coord`: @param coord center map to this coordinate, coord should be in wg84 format

    - `zoomLevel`: zoom map to this level;

    ###### Throws

    - `IllegalArgumentException`: if the coord is not wg84 format

  - ### zoomToLayers

    public void zoomToLayers()
    zoom map to largest zoom while all Layers are contained

  - ### getCenter

    public Coord getCenter()

    Gets the center location of the map in WGS84 format.

    ###### Returns

    Coordinate of center location of map.

  - ### getZoomLevel

    public int getZoomLevel()

    Returns the current zoom level of the map.

    ###### Returns

    zoom level

  - ### setZoomLevel

    public void setZoomLevel(int zoom)

    Sets the current zoom level of the map.

    ###### Parameters

    - `zoom`: Zoom level

  - ### getMaxZoomLevel

    public int getMaxZoomLevel()

    Returns the max zoom level of the map

    ###### Returns

    max zoom level

  - ### getMinZoomLevel

    public int getMinZoomLevel()

    Returns the min zoom level of the map

    ###### Returns

    min zoom level

  - ### center

    public Coord center()

    Gets the center of the map.

    ###### Returns

    Coord in WGS84

  - ### isLeftKey

    protected boolean isLeftKey(int keyCode)

    Checks if key code is left keycode.

    ###### Parameters

    - `keyCode`: The key-code to check.

    ###### Returns

    true if this is a left keycode

  - ### isRightKey

    protected boolean isRightKey(int keyCode)

    Returns true if this is a right keycode

    ###### Parameters

    - `keyCode`: The key code to check

    ###### Returns

    true if this is a right keycode.

  - ### isDownKey

    protected boolean isDownKey(int keyCode)

    Returns true if this is a down keycode

    ###### Parameters

    - `keyCode`: The key code to check.

    ###### Returns

    True if key code is down key.

  - ### isUpKey

    protected boolean isUpKey(int keyCode)

    Returns true if this is a up keycode

    ###### Parameters

    - `keyCode`: The key code to check.

    ###### Returns

    true if key code is up key.

  - ### isZoomInKey

    protected boolean isZoomInKey(int keyCode)

    Returns true if this is a zoom in keycode

    ###### Parameters

    - `keyCode`: The key code to check

    ###### Returns

    true if key code is zoom-in key.

  - ### isZoomOutKey

    protected boolean isZoomOutKey(int keyCode)

    Returns true if this is a zoom out keycode

    ###### Parameters

    - `keyCode`: The key code to check.

    ###### Returns

    true if the key code for the zoom-out key.

  - ### isZoomToLayersKey

    protected boolean isZoomToLayersKey(int keyCode)

    Returns true if this is a zoom to layers keycode

    ###### Parameters

    - `keyCode`: The key-code to check.

    ###### Returns

    true if the key code is for the zoom to layers key.

  - ### addMapListener

    public void addMapListener(MapListener listener)

    Adds a listener to map panning/zooming

    ###### Parameters

    - `listener`: the listener callback

  - ### removeMapListener

    public void removeMapListener(MapListener listener)

    Removes the map listener callback

    ###### Parameters

    - `listener`: the listener

  - ### getPropertyNames

    public String[] getPropertyNames()

    A component may expose mutable property names for a UI designer to manipulate, this API is designed for usage internally by the GUI builder code

    ###### Returns

    the property names allowing mutation

    Overrides:
      `getPropertyNames` in class `Component`

  - ### getPropertyTypes

    public Class[] getPropertyTypes()

    Matches the property names method (see that method for further details).

    ###### Returns

    the types of the properties

    Overrides:
      `getPropertyTypes` in class `Component`

  - ### getPropertyValue

    public Object getPropertyValue(String name)

    Returns the current value of the property name, this method is used by the GUI builder

    ###### Parameters

    - `name`: the name of the property

    ###### Returns

    the value of said property

    Overrides:
      `getPropertyValue` in class `Component`

  - ### setPropertyValue

    public String setPropertyValue(String name, Object value)

    Sets a new value to the given property, returns an error message if failed and null if successful. Notice that some builtin properties such as "$designMode" might be sent to components to indicate application state.

    ###### Parameters

    - `name`: the name of the property

    - `value`: new value for the property

    ###### Returns

    error message or null

    Overrides:
      `setPropertyValue` in class `Component`