2 * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 using System.Collections.Generic;
21 using Color = ElmSharp.Color;
26 /// Polygon map object
28 public class Polygon : MapObject, IDisposable
30 internal Interop.PolygonHandle handle;
31 private List<Geocoordinates> _coordinateList;
34 /// Creates a polygon visual object
36 /// <param name="coordinates">list of geographical coordinates</param>
37 /// <param name="color">background color</param>
38 public Polygon(IEnumerable<Geocoordinates> coordinates, Color color) : base()
40 var err = Interop.ErrorCode.InvalidParameter;
41 if (coordinates == null || coordinates.Count() < 3)
43 err.ThrowIfFailed("given coordinates list should contain at least 3 coordinates");
45 _coordinateList = coordinates.ToList();
46 var geocoordinateList = new GeocoordinatesList(_coordinateList, false);
47 handle = new Interop.PolygonHandle(geocoordinateList.handle, color);
53 public event EventHandler Clicked;
55 public override bool IsVisible
57 get { return handle.IsVisible; }
58 set { handle.IsVisible = value; }
62 /// List of geographical coordinates of polygon vertices
64 public IEnumerable<Geocoordinates> Coordinates
68 return _coordinateList;
72 var coordinates = value.ToList();
73 var err = Interop.ErrorCode.InvalidParameter;
74 if (coordinates == null || coordinates.Count() < 3)
76 err.ThrowIfFailed("given coordinates list should contain at least 3 coordinates");
79 var geocoordinateList = new GeocoordinatesList(coordinates, false);
80 if (handle.SetPolygon(geocoordinateList.handle).IsSuccess())
82 _coordinateList = coordinates;
88 /// Background fill color
90 public Color FillColor
94 return handle.FillColor;
98 handle.FillColor = value;
102 internal override void HandleClickedEvent()
104 Clicked?.Invoke(this, EventArgs.Empty);
107 internal override void InvalidateMapObject()
112 internal override Interop.ViewObjectHandle GetHandle()
117 #region IDisposable Support
118 private bool _disposedValue = false;
120 protected virtual void Dispose(bool disposing)
126 _coordinateList.Clear();
129 _disposedValue = true;
133 public void Dispose()