/**
* @namespace WPGMZA
* @module Circle
* @requires WPGMZA.MapObject
*/
(function($) {
var Parent = WPGMZA.MapObject;
/**
* @class Circle
* @summary Represents a generic circle. <b>Please do not instantiate this object directly, use createInstance</b>
* @return {WPGMZA.Circle}
*/
WPGMZA.Circle = function(options, engineCircle)
{
var self = this;
WPGMZA.assertInstanceOf(this, "Circle");
this.center = new WPGMZA.LatLng();
this.radius = 100;
Parent.apply(this, arguments);
}
WPGMZA.Circle.prototype = Object.create(Parent.prototype);
WPGMZA.Circle.prototype.constructor = WPGMZA.Circle;
/**
* @function createInstance
* @summary Creates an instance of a circle, <b>please always use this function rather than calling the constructor directly</b>
* @param {object} options Options for the object (optional)
*/
WPGMZA.Circle.createInstance = function(options)
{
var constructor;
if(WPGMZA.settings.engine == "google-maps")
constructor = WPGMZA.GoogleCircle;
else
constructor = WPGMZA.OLCircle;
return new constructor(options);
}
/**
* @function getCenter
* @returns {WPGMZA.LatLng}
*/
WPGMZA.Circle.prototype.getCenter = function()
{
return this.center.clone();
}
/**
* @function setCenter
* @param {object|WPGMZA.LatLng} latLng either a literal or as a WPGMZA.LatLng
* @returns {void}
*/
WPGMZA.Circle.prototype.setCenter = function(latLng)
{
this.center.lat = latLng.lat;
this.center.lng = latLng.lng;
}
/**
* @function getRadius
* @summary Returns the circles radius in kilometers
* @returns {WPGMZA.LatLng}
*/
WPGMZA.Circle.prototype.getRadius = function()
{
return this.radius;
}
/**
* @function setRadius
* @param {number} The radius
* @returns {void}
*/
WPGMZA.Circle.prototype.setRadius = function(radius)
{
this.radius = radius;
}
/**
* @function getMap
* @summary Returns the map that this circle is being displayed on
* @return {WPGMZA.Map}
*/
WPGMZA.Circle.prototype.getMap = function()
{
return this.map;
}
/**
* @function setMap
* @param {WPGMZA.Map} The target map
* @summary Puts this circle on a map
* @return {void}
*/
WPGMZA.Circle.prototype.setMap = function(map)
{
if(this.map)
this.map.removeCircle(this);
if(map)
map.addCircle(this);
}
})(jQuery);