Source: bemap-model/bemap-circle.js

/**
 * BeNomad BeMap JavaScript API - Circle class
 */

/**
 * @classdesc
 * Base class for Circle.
 * @public
 * @constructor
 * @param {bemap.Coordinate} center Array of bemap.Coordinate.
 * @param {int} radius Radius of circle.
 * @param {Object} options See below the available values.
 * @param {bemap.LineStyle} options.style Style of poyline used by the renderer.
 * @param {String} options.name Name of circle.
 * @param {Object} options.properties custom object.
 */
bemap.Circle = function(center, radius, options) {
  var opts = options || {};

  /**
   * @type {Object}
   * @protected
   */
  this.native = null;

  /**
   * @type {Object}
   * @protected
   */
  this.map = null;

  /**
   * @type {Object}
   * @protected
   */
  this.layer = null;

  /**
   * @type {bemap.Coordinate}
   * @protected
   */
  this.coordinate = center ? center : new bemap.Coordinate();

  /**
   * @type {int}
   * @protected
   */
  this.radius = radius ? radius : null;

  /**
     * @type {
     bemap.LineStyle
 }
     * @protected
     */
  this.style = opts.style ? opts.style : null;


  /**
   * @type {String}
   * @protected
   */
  this.id = opts.id ? opts.id : null;

  /**
   * @type {String}
   * @protected
   */
  this.name = opts.name ? opts.name : null;

  /**
   * @type {Array}
   * @protected
   */
  this.events = [];

  /**
   * @type {Function}
   * @protected
   */
  this.callback = [];

  /**
   * @type {Object}
   * @protected
   */
  this.properties = opts.properties ? opts.properties : null;
};


/**
 * Return the id of the circle.
 * @public
 * @return {String} Return the id of the circle.
 */
bemap.Circle.prototype.getId = function() {
  return this.id;
};

/**
 * Define the id of circle
 * @public
 * @param {String} id the new id to set.
 * @return {bemap.Circle} this
 */
bemap.Circle.prototype.setId = function(id) {
  this.id = id;
  return this;
};

/**
 * Return the name of the circle.
 * @public
 * @return {String} Return the name of the circle.
 */
bemap.Circle.prototype.getName = function() {
  return this.name;
};

/**
 * Define the name of circle
 * @public
 * @param {String} name the new name to set.
 * @return {bemap.Circle} this
 */
bemap.Circle.prototype.setName = function(name) {
  this.name = name;
  return this;
};

/**
 * Return the radius of the circle.
 * @public
 * @return {int} return radius of the circle.
 */
bemap.Circle.prototype.getRadius = function() {
  return this.radius;
};

/**
 * Return the radius of the circle.
 * @public
 * @return {int} return radius of the circle.
 */
bemap.Circle.prototype.setRadius = function(radius) {
  this.radius = radius;
  if (this.native && this.map) {
    this.map.setRadiusCircle(this);
  }
  return this;
};


/**
 * Return the coordinate. See bemap.Coordinate.
 * @public
 * @return {bemap.Coordinate} Return the coordinate. See bemap.Coordinate.
 */
bemap.Circle.prototype.getCenter = function() {
  if (this.map && this.native) {
    this.map.updateCircleCenter(this);
  }
  return this.coordinate;
};

/**
 * Return the coordinate. See bemap.Coordinate.
 * @public
 * @return {bemap.Coordinate} Return the coordinate. See bemap.Coordinate.
 */
bemap.Circle.prototype.getCoordinate = function() {
  return this.coordinate;
};

/**
 * Return the style of the circle.
 * @public
 * @return {bemap.LineStyle} Return the style of the circle.
 */
bemap.Circle.prototype.getStyle = function() {
  return this.style;
};

/** Set the center of the circle.
 * @public
 * @param {bemap.Coordinate} center the new coordinates to set.
 * @return {bemap.Marker} this
 */
bemap.Circle.prototype.setCenter = function(coordinate) {
  this.coordinate = coordinate;
  if (this.native && this.map) {
    this.map.setCoordinateCircle(this);
  }
  return this;
};

/**
 * Remove the Circle from the layer.
 * @public
 * @return {bemap.Circle} this
 */
bemap.Circle.prototype.remove = function() {
  if (this.map !== null && bemap.inheritsof(this.map, bemap.Map)) {
    this.map.removeCircle(this);
  }
  return this;
};

/**
 * Set the listner when an specified eventType occur on bemap.Circle.
 * @public
 * @param {bemap.Map.EventType} eventType Event type.
 * @param {function} callback Function will be called when the specified eventType is occur.
 * @param {object} options options.
 * @return {bemap.Circle} this.
 */
bemap.Circle.prototype.on = function(eventType, callback, options) {
  if (this.map !== null && bemap.inheritsof(this.map, bemap.Map)) {
    this.map.onCircle(this, eventType, callback, options);
  }
  return this;
};

/**
 * Define the draggable capability for bemap.Circle.
 * @protected
 * @param {function} callback Function will be called when the specified eventType is occur.
 * @param {object} options Options.
 * @param {bemap.Layer} options.layerFilter set the bemap layer used as filter.
 * @return {bemap.Listener} bemap.listener.
 */
bemap.Circle.prototype.draggable = function(callback, options) {
  if (this.map !== null && bemap.inheritsof(this.map, bemap.Map)) {
    return this.map.draggableCircle(this, callback, options);
  }
  return new bemap.listener();
};