void AddPolygons (IList polygons) { var map = NativeMap; if (map == null) return; if (_polygons == null) _polygons = new List<APolygon> (); _polygons.AddRange (polygons.Cast<Polygon> ().Select (polygon => { var opts = new PolygonOptions (); foreach (var p in polygon.Positions) opts.Add (new LatLng (p.Latitude, p.Longitude)); opts.InvokeStrokeWidth(polygon.StrokeWidth * _scaledDensity); // TODO: convert from px to pt. Is this collect? (looks like same iOS Maps) opts.InvokeStrokeColor(polygon.StrokeColor.ToAndroid()); opts.InvokeFillColor(polygon.FillColor.ToAndroid()); opts.Clickable (polygon.IsClickable); var nativePolygon = map.AddPolygon(opts); // associate pin with marker for later lookup in event handlers polygon.Id = nativePolygon; return nativePolygon; })); }