namespace Tizen.Maps
{
/// <summary>
- /// Overlay map object
+ /// Overlay map object.
/// </summary>
- public class Overlay : MapObject
+ /// <since_tizen> 3 </since_tizen>
+ public class Overlay : MapObject, IDisposable
{
- private EvasObject _containedObject;
+ internal Interop.OverlayHandle handle;
/// <summary>
- /// Creates normal overlay map object
+ /// Creates a normal overlay map object.
/// </summary>
+ /// <since_tizen> 3 </since_tizen>
/// <param name="coordinates"></param>
/// <param name="objectToContain"></param>
- public Overlay(Geocoordinates coordinates, EvasObject objectToContain) : this(coordinates, objectToContain, Interop.ViewOverlayType.Normal)
+ /// <exception cref="ArgumentException">Thrown when the input coordinates or objectToContain are invalid.</exception>
+ public Overlay(Geocoordinates coordinates, EvasObject objectToContain)
+ : this(coordinates, objectToContain, Interop.ViewOverlayType.Normal)
{
}
- internal Overlay(Interop.ViewObjectHandle nativeHandle) : base(nativeHandle)
- {
- }
-
- internal Overlay(Geocoordinates coordinates, EvasObject objectToContain, Interop.ViewOverlayType type) : base(CreateNativeHandle(coordinates, objectToContain, type))
+ internal Overlay(Geocoordinates coordinates, EvasObject objectToContain, Interop.ViewOverlayType type)
{
var err = Interop.ErrorCode.InvalidParameter;
if (coordinates == null || objectToContain == null)
{
err.ThrowIfFailed("given coordinates or parent evas object is null");
}
- _containedObject = objectToContain;
+ handle = new Interop.OverlayHandle(coordinates.handle, objectToContain, type);
+ }
+
+ /// <summary>
+ /// Destroy the Overlay object.
+ /// </summary>
+ ~Overlay()
+ {
+ Dispose(false);
}
/// <summary>
- /// Geographical coordinates for overlay
+ /// Gets or sets the visibility of an overlay map object.
/// </summary>
+ /// <since_tizen> 3 </since_tizen>
+ public override bool IsVisible
+ {
+ get { return handle.IsVisible; }
+ set { handle.IsVisible = value; }
+ }
+
+ /// <summary>
+ /// Gets or sets geographical coordinates for an overlay map object.
+ /// </summary>
+ /// <since_tizen> 3 </since_tizen>
public Geocoordinates Coordinates
{
get
{
- IntPtr nativeHandle;
- Interop.ViewObject.OverlayGetCoordinates(handle, out nativeHandle);
- return new Geocoordinates(nativeHandle);
+ return new Geocoordinates(handle.Coordinates);
}
set
{
// Overlay takes ownership of the native handle.
- IntPtr nativeHandle;
- var err = Interop.Coordinates.Clone(value.handle, out nativeHandle);
- err.WarnIfFailed("Failed to clone native handle for coordinates");
-
- Interop.CoordinatesHandle clonedHandle = new Interop.CoordinatesHandle(nativeHandle);
- err = Interop.ViewObject.OverlaySetCoordinates(handle, clonedHandle);
- if (err.WarnIfFailed("Failed to set coordinates to overlay"))
- {
- clonedHandle.ReleaseOwnership();
- }
+ handle.Coordinates = value.handle;
+ value.handle.HasOwnership = false;
}
}
/// <summary>
- /// Minimum zoom level for overlay
+ /// Gets or sets minimum zoom level for an overlay map object.
/// </summary>
+ /// <since_tizen> 3 </since_tizen>
public int MinimumZoomLevel
{
get
{
- int value;
- Interop.ViewObject.OverlayGetMinZoomLevel(handle, out value);
- return value;
+ return handle.MinZoomLevel;
}
set
{
- Interop.ViewObject.OverlaySetMinZoomLevel(handle, value);
+ handle.MinZoomLevel = value;
}
}
/// <summary>
- /// Maximum zoom lever for overlay
+ /// Gets or sets maximum zoom lever for an overlay map object.
/// </summary>
+ /// <since_tizen> 3 </since_tizen>
public int MaximumZoomLevel
{
get
{
- int value;
- Interop.ViewObject.OverlayGetMaxZoomLevel(handle, out value);
- return value;
+ return handle.MaxZoomLevel;
}
set
{
- Interop.ViewObject.OverlaySetMaxZoomLevel(handle, value);
+ handle.MaxZoomLevel = value;
}
}
- private static Interop.ViewObjectHandle CreateNativeHandle(Geocoordinates coordinates, EvasObject objectToContain, Interop.ViewOverlayType type)
+ // Overlay object does not support click events
+ internal override void HandleClickedEvent()
{
- if (coordinates == null || objectToContain == null) return new Interop.ViewObjectHandle(IntPtr.Zero);
+ throw new NotSupportedException("Overlay object does not support click events");
+ }
- IntPtr nativeHandle;
- var err = Interop.Coordinates.Clone(coordinates.handle, out nativeHandle);
- err.ThrowIfFailed("Failed to clone native handle for coordinates");
+ internal override void InvalidateMapObject()
+ {
+ handle = null;
+ }
- Interop.CoordinatesHandle clonedHandle = new Interop.CoordinatesHandle(nativeHandle);
- err = Interop.ViewObject.CreateOverlay(clonedHandle, objectToContain, type, out nativeHandle);
- err.ThrowIfFailed("Failed to create native handle for Overlay");
+ internal override Interop.ViewObjectHandle GetHandle()
+ {
+ return handle;
+ }
- clonedHandle.ReleaseOwnership();
- return new Interop.ViewObjectHandle(nativeHandle);
+ #region IDisposable Support
+ private bool _disposedValue = false;
+
+ /// <summary>
+ /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+ /// </summary>
+ /// <param name="disposing">If true, managed and unmanaged resources can be disposed, otherwise only unmanaged resources can be disposed.</param>
+ /// <since_tizen> 3 </since_tizen>
+ protected virtual void Dispose(bool disposing)
+ {
+ if (!_disposedValue)
+ {
+ handle?.Dispose();
+ _disposedValue = true;
+ }
}
+
+ /// <summary>
+ /// Releases all the resources used by this object.
+ /// </summary>
+ /// <since_tizen> 3 </since_tizen>
+ public void Dispose()
+ {
+ Dispose(true);
+ GC.SuppressFinalize(this);
+ }
+ #endregion
}
/// <summary>
- /// Bubble overlay map object
+ /// The bubble overlay map object.
/// </summary>
+ /// <since_tizen> 3 </since_tizen>
public class BubbleOverlay : Overlay
{
- public BubbleOverlay(Geocoordinates coordinates, EvasObject objectToContain) : base(coordinates, objectToContain, Interop.ViewOverlayType.Bubble)
+ /// <summary>
+ /// Creates a bubble overlay.
+ /// </summary>
+ /// <since_tizen> 3 </since_tizen>
+ /// <param name="coordinates">The geographical coordinates to be pointed.</param>
+ /// <param name="objectToContain">The EvasObject to be shown.</param>
+ /// <exception cref="System.NotSupportedException">Thrown when the required feature is not supported.</exception>
+ /// <exception cref="ArgumentException">Thrown when the input coordinates or objectToContain are invalid.</exception>
+ public BubbleOverlay(Geocoordinates coordinates, EvasObject objectToContain)
+ : base(coordinates, objectToContain, Interop.ViewOverlayType.Bubble)
{
}
}
/// <summary>
- /// Box Overlay map object
+ /// The box overlay map object.
/// </summary>
+ /// <since_tizen> 3 </since_tizen>
public class BoxOverlay : Overlay
{
/// <summary>
- /// Creates Box overlay
+ /// Creates a box overlay.
/// </summary>
- public BoxOverlay(Geocoordinates coordinates, EvasObject objectToContain) : base(coordinates, objectToContain, Interop.ViewOverlayType.Box)
+ /// <since_tizen> 3 </since_tizen>
+ /// <param name="coordinates">The geographical coordinates to be pointed.</param>
+ /// <param name="objectToContain">The EvasObject to be shown.</param>
+ /// <exception cref="System.NotSupportedException">Thrown when the required feature is not supported.</exception>
+ /// <exception cref="ArgumentException">Thrown when the input coordinates or objectToContain are invalid</exception>
+ public BoxOverlay(Geocoordinates coordinates, EvasObject objectToContain)
+ : base(coordinates, objectToContain, Interop.ViewOverlayType.Box)
{
}
}