'The GPolygon object initializes on a GEOS Polygon or a parameter that
may be instantiated into GEOS Polygon.  Please note that this will not
depict a Polygon\'s internal rings.
Keyword Options:
stroke_color:
The color of the polygon outline. Defaults to \'#0000ff\' (blue).
stroke_weight:
The width of the polygon outline, in pixels.  Defaults to 2.
stroke_opacity:
The opacity of the polygon outline, between 0 and 1.  Defaults to 1.
fill_color:
The color of the polygon fill.  Defaults to \'#0000ff\' (blue).
fill_opacity:
The opacity of the polygon fill.  Defaults to 0.4.'

def __init__(self, poly, stroke_color='#0000ff', stroke_weight=2, stroke_opacity=1, fill_color='#0000ff', fill_opacity=0.4):

    if isinstance(poly, six.string_types):
        poly = fromstr(poly)
    if isinstance(poly, (tuple, list)):
        poly = Polygon(poly)
    if (not isinstance(poly, Polygon)):
        raise TypeError('GPolygon    may    only    initialize    on    GEOS    Polygons.')
    self.envelope = poly.envelope
    self.points = self.latlng_from_coords(poly.shell.coords)
    (self.stroke_color, self.stroke_opacity, self.stroke_weight) = (stroke_color, stroke_opacity, stroke_weight)
    (self.fill_color, self.fill_opacity) = (fill_color, fill_opacity)
    super(GPolygon, self).__init__()
