Polygon

public final class Polygon extends Object

A polygon on the earth's surface. A polygon can be convex or concave, it may span the 180 meridian and it can have holes that are not filled in. It has the following properties:

Outline
The outline is specified by a list of vertices in clockwise or counterclockwise order. It is not necessary for the start and end points to coincide; if they do not, the polygon will be automatically closed. Line segments are drawn between consecutive points in the shorter of the two directions (east or west).
Holes
A hole is a region inside the polygon that is not filled. A hole is specified in exactly the same way as the outline. A hole must be fully contained within the outline. Multiple holes can be specified, however overlapping holes are not supported.
Stroke Width
Line segment width in screen pixels. The width is constant and independent of the camera's zoom level. The default value is 10.
Stroke Color
Line segment color in ARGB format, the same format used by Color. The default value is black (0xff000000).
Stroke Joint Type
The joint type defines the shape to be used when joining adjacent line segments at all vertices of the polygon's outline. See JointType for supported joint types. The default value is DEFAULT.
Stroke pattern
Solid (default, represented by null) or a sequence of PatternItem objects to be repeated along the polygon's outline. Available PatternItem types: Gap (defined by gap length in pixels), Dash (defined by stroke width and dash length in pixels) and Dot (circular, centered on the polygon's outline, diameter defined by stroke width in pixels).
Fill Color
Fill color in ARGB format, the same format used by Color. The default value is transparent (0x00000000). If the polygon geometry is not specified correctly (see above for Outline and Holes), then no fill will be drawn.
Z-Index
The order in which this polygon is drawn with respect to other overlays, including Polylines, Circles, GroundOverlays and TileOverlays, but not Markers. An overlay with a larger z-index is drawn over overlays with smaller z-indices. The order of overlays with the same z-index value is arbitrary. The default is 0.
Visibility
Indicates if the polygon is visible or invisible, i.e., whether it is drawn on the map. An invisible polygon is not drawn, but retains all of its other properties. The default is true, i.e., visible.
Geodesic status
Indicates whether the segments of the polygon should be drawn as geodesics, as opposed to straight lines on the Mercator projection. A geodesic is the shortest path between two points on the Earth's surface. The geodesic curve is constructed assuming the Earth is a sphere
Clickability
If you want to handle events fired when the user clicks the polygon, set this property to true. You can change this value at any time. The default is false. If this property is set to true, your app will receive notifications to the GoogleMap.OnPolygonClickListener registered through setOnPolygonClickListener(GoogleMap.OnPolygonClickListener).
Tag
An Object associated with the polygon. For example, the Object can contain data about what the polygon represents. This is easier than storing a separate Map<Polygon, Object>. As another example, you can associate a String ID corresponding to the ID from a data set. Google Maps Android API neither reads nor writes this property.

Methods in this class must be called on the Android UI thread. If not, an IllegalStateException will be thrown at runtime.

Example

GoogleMap map;
 // ... get a map.
 // Add a triangle in the Gulf of Guinea
 Polygon polygon = map.addPolygon(new PolygonOptions()
     .add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5), new LatLng(0, 0))
     .strokeColor(Color.RED)
     .fillColor(Color.BLUE));
 

Developer Guide

For more information, read the Shapes developer guide.

Public Method Summary

boolean
equals(Object other)
Tests if this Polygon is equal to another.
int
getFillColor()
Gets the fill color of this polygon.
List<List<LatLng>>
getHoles()
Returns a snapshot of the holes of this polygon at this time .
String
getId()
Gets this polygon's id.
List<LatLng>
getPoints()
Returns a snapshot of the vertices of this polygon at this time .
int
getStrokeColor()
Gets the stroke color of this polygon.
int
getStrokeJointType()
Gets the stroke joint type used at all vertices of the polygon's outline.
List<PatternItem>
getStrokePattern()
Gets the stroke pattern of this polygon's outline.
float
getStrokeWidth()
Gets the stroke width of this polygon.
Object
getTag()
Gets the tag for the polygon.
float
getZIndex()
Gets the zIndex of this polygon.
int
boolean
isClickable()
Gets the clickability of the polygon.
boolean
isGeodesic()
Gets whether each segment of the line is drawn as a geodesic or not.
boolean
isVisible()
Gets the visibility of this polygon.
void
remove()
Removes the polygon from the map.
void
setClickable(boolean clickable)
Sets the clickability of the polygon.
void
setFillColor(int color)
Sets the fill color of this polygon.
void
setGeodesic(boolean geodesic)
Sets whether to draw each segment of the line as a geodesic or not.
void
setHoles(List<? extends List<LatLng>> holes)
Sets the holes of this polygon.
void
setPoints(List<LatLng> points)
Sets the points of this polygon.
void
setStrokeColor(int color)
Sets the stroke color of this polygon.
void
setStrokeJointType(int jointType)
Sets the joint type for all vertices of the polygon's outline.
void
setStrokePattern(List<PatternItem> pattern)
Sets the stroke pattern of the polygon's outline.
void
setStrokeWidth(float width)
Sets the stroke width of this polygon.
void
setTag(Object tag)
Sets the tag for the polygon.
void
setVisible(boolean visible)
Sets the visibility of this polygon.
void
setZIndex(float zIndex)
Sets the zIndex of this polygon.

Inherited Method Summary

Public Methods

public boolean equals (Object other)

Tests if this Polygon is equal to another.

Parameters
other an Object.
Returns
  • true if both objects are the same object, that is, this == other.

public int getFillColor ()

Gets the fill color of this polygon.

Returns
  • the color in ARGB format.

public List<List<LatLng>> getHoles ()

Returns a snapshot of the holes of this polygon at this time . The list returned is a copy of the list of holes and so changes to the polygon's holes will not be reflected by this list, nor will changes to this list be reflected by the polygon.

public String getId ()

Gets this polygon's id. The id will be unique amongst all Polygons on a map.

public List<LatLng> getPoints ()

Returns a snapshot of the vertices of this polygon at this time . The list returned is a copy of the list of vertices and so changes to the polygon's vertices will not be reflected by this list, nor will changes to this list be reflected by the polygon. To change the vertices of the polygon, call setPoints(List).

public int getStrokeColor ()

Gets the stroke color of this polygon.

Returns
  • the color in ARGB format.

public int getStrokeJointType ()

Gets the stroke joint type used at all vertices of the polygon's outline. See JointType for possible values.

Returns
  • the stroke joint type.

public List<PatternItem> getStrokePattern ()

Gets the stroke pattern of this polygon's outline.

Returns
  • the stroke pattern.

public float getStrokeWidth ()

Gets the stroke width of this polygon.

Returns
  • the width in screen pixels.

public Object getTag ()

Gets the tag for the polygon.

Returns
  • the tag if a tag was set with setTag; null if no tag has been set.

public float getZIndex ()

Gets the zIndex of this polygon.

Returns
  • the zIndex of the polygon.

public int hashCode ()

public boolean isClickable ()

Gets the clickability of the polygon. If the polygon is clickable, your app will receive notifications to the GoogleMap.OnPolygonClickListener when the user clicks the polygon. The event listener is registered through setOnPolygonClickListener(GoogleMap.OnPolygonClickListener).

Returns
  • true if the polygon is clickable; otherwise, returns false.

public boolean isGeodesic ()

Gets whether each segment of the line is drawn as a geodesic or not.

Returns
  • true if each segment is drawn as a geodesic; false if each segment is drawn as a straight line on the Mercator projection.

public boolean isVisible ()

Gets the visibility of this polygon.

Returns
  • this polygon visibility.

public void remove ()

Removes the polygon from the map. After a polygon has been removed, the behavior of all its methods is undefined.

public void setClickable (boolean clickable)

Sets the clickability of the polygon. If the polygon is clickable, your app will receive notifications to the GoogleMap.OnPolygonClickListener when the user clicks the polygon. The event listener is registered through setOnPolygonClickListener(GoogleMap.OnPolygonClickListener).

Parameters
clickable New clickability setting for the polygon.

public void setFillColor (int color)

Sets the fill color of this polygon.

Parameters
color the color in ARGB format

public void setGeodesic (boolean geodesic)

Sets whether to draw each segment of the line as a geodesic or not.

Parameters
geodesic if true, then each segment is drawn as a geodesic; if false, each segment is drawn as a straight line on the Mercator projection.

public void setHoles (List<? extends List<LatLng>> holes)

Sets the holes of this polygon. This method will take a copy of the holes, so further mutations to holes will have no effect on this polygon.

Parameters
holes an list of holes, where a hole is an list of LatLngs.

public void setPoints (List<LatLng> points)

Sets the points of this polygon. This method will take a copy of the points, so further mutations to points will have no effect on this polygon.

Parameters
points a list of LatLngs that are the vertices of the polygon.

public void setStrokeColor (int color)

Sets the stroke color of this polygon.

Parameters
color the color in ARGB format

public void setStrokeJointType (int jointType)

Sets the joint type for all vertices of the polygon's outline.

See JointType for allowed values. The default value DEFAULT will be used if joint type is undefined or is not one of the allowed values.

Parameters
jointType the stroke joint type.

public void setStrokePattern (List<PatternItem> pattern)

Sets the stroke pattern of the polygon's outline. The default stroke pattern is solid, represented by null.

Parameters
pattern the stroke pattern.

public void setStrokeWidth (float width)

Sets the stroke width of this polygon.

Parameters
width the width in display pixels.

public void setTag (Object tag)

Sets the tag for the polygon.

You can use this property to associate an arbitrary Object with this polygon. For example, the Object can contain data about what the polygon represents. This is easier than storing a separate Map<Polygon, Object>. As another example, you can associate a String ID corresponding to the ID from a data set. Google Maps Android API neither reads nor writes this property. It is your responsibility to call setTag(null) to clear the tag when you no longer need it, to prevent memory leaks in your app.

Parameters
tag if null, the tag is cleared.

public void setVisible (boolean visible)

Sets the visibility of this polygon. When not visible, a polygon is not drawn, but it keeps all its other properties.

Parameters
visible if true, then the polygon is visible; if false, it is not.

public void setZIndex (float zIndex)

Sets the zIndex of this polygon. Polygons with higher zIndices are drawn above those with lower indices.

Parameters
zIndex the zIndex of this polygon.