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 /// Polyline map object
28 public class Polyline : MapObject, IDisposable
30 internal Interop.PolylineHandle handle;
31 private List<Geocoordinates> _coordinateList;
34 /// Creates polyline visual object
36 /// <param name="coordinates">List of geographical coordinates</param>
37 /// <param name="color">Line color</param>
38 /// <param name="width">The width of line [1 ~ 100] (pixels)</param>
39 public Polyline(List<Geocoordinates> coordinates, Color color, int width) : base()
41 var err = Interop.ErrorCode.InvalidParameter;
42 if (coordinates == null || coordinates.Count() < 2)
44 err.ThrowIfFailed("given coordinates list should contain at least 2 coordinates");
46 _coordinateList = coordinates.ToList();
47 var geocoordinateList = new GeocoordinatesList(_coordinateList);
48 handle = new Interop.PolylineHandle(geocoordinateList.handle, color, width);
54 public event EventHandler Clicked;
56 public override bool IsVisible
58 get { return handle.IsVisible; }
59 set { handle.IsVisible = value; }
63 /// List of geographical coordinates for polyline vertices
65 public IEnumerable<Geocoordinates> Coordinates
69 return _coordinateList;
73 var coordinates = value.ToList();
74 var err = Interop.ErrorCode.InvalidParameter;
75 if (coordinates == null || coordinates.Count() < 2)
77 err.ThrowIfFailed("given coordinates list should contain at least 2 coordinates");
80 var geocoordinateList = new GeocoordinatesList(coordinates, false);
81 if (handle.SetPolyline(geocoordinateList.handle).IsSuccess())
83 _coordinateList = coordinates;
91 public Color LineColor
95 return handle.LineColor;
99 handle.LineColor = value;
104 /// line width [1 ~ 100 pixels]
110 return handle.LineWidth;
114 handle.LineWidth = value;
118 internal override void HandleClickedEvent()
120 Clicked?.Invoke(this, EventArgs.Empty);
123 internal override void InvalidateMapObject()
128 internal override Interop.ViewObjectHandle GetHandle()
133 #region IDisposable Support
134 private bool _disposedValue = false;
136 protected virtual void Dispose(bool disposing)
142 _coordinateList.Clear();
145 _disposedValue = true;
149 public void Dispose()