/**
* BeNomad BeMap JavaScript API - Marker
*/
/**
* @classdesc
* Base class for marker.
* @public
* @constructor
* @param {bemap.Coordinate} coordinates in bemap.Coordinate.
* @param {Object} options See below the available values.
* @param {bemap.Icon} options.icon Style of marker used by the renderer.
* @param {String} options.name Name of marker.
* @param {Object} options.properties custom object.
*/
bemap.Marker = function(coordinate, 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 = coordinate ? coordinate : new bemap.Coordinate();
/**
* @type {bemap.Icon}
* @protected
*/
this.icon = opts.icon ? opts.icon : null;
/**
* @type {String}
* @protected
*/
this.id = opts.id ? opts.id : null;
/**
* @type {String}
* @protected
*/
this.name = opts.name ? opts.name : null;
/**
* @type {String}
* @protected
*/
this.textStyle = opts.textStyle ? opts.textStyle : null;
/**
* @type {Array}
* @protected
*/
this.events = [];
/**
* @type {Function}
* @protected
*/
this.callback = [];
/**
* @type {Object}
* @protected
*/
this.properties = opts.properties ? opts.properties : null;
};
/**
* Return the bemap.Icon that define the style of the marker.
* @public
* @return {bemap.Icon} Return the bemap.Icon that define the style of the marker.
*/
bemap.Marker.prototype.getIcon = function() {
return this.icon;
};
/**
* Set the icon style of the marker.
* @public
* @param {bemap.Icon} icon the new icon style to set.
* @return {bemap.Marker} this
*/
bemap.Marker.prototype.setIcon = function(icon) {
this.icon = icon;
return this;
};
/**
* Return the id of the marker.
* @public
* @return {String} Return the id of the marker.
*/
bemap.Marker.prototype.getId = function() {
return this.id;
};
/**
* Define the id of marker
* @public
* @param {String} id the new id to set.
* @return {bemap.Marker} this
*/
bemap.Marker.prototype.setId = function(id) {
this.id = id;
return this;
};
/**
* Return the properties of the marker.
* @public
* @return {String} Return the properties of the marker.
*/
bemap.Marker.prototype.getProperties = function() {
return this.properties;
};
/**
* Define the properties of marker
* @public
* @param {String} properties the new properties to set.
* @return {bemap.Marker} this
*/
bemap.Marker.prototype.setProperties = function(properties) {
this.properties = properties;
return this;
};
/**
* Return the name of the marker.
* @public
* @return {String} Return the name of the marker.
*/
bemap.Marker.prototype.getName = function() {
return this.name;
};
/**
* Define the name of polyline
* @public
* @param {String} name the new name to set.
* @return {bemap.Marker} this
*/
bemap.Marker.prototype.setName = function(name) {
this.name = name;
return this;
};
/**
* Return the bemap.TextStyle that define the style of text.
* @public
* @return {bemap.TextStyle} Return the bemap.TextStyle that define the style of text.
*/
bemap.Marker.prototype.getTextStyle = function() {
return this.textStyle;
};
/**
* Set the text style of the marker.
* @public
* @param {bemap.TextStyle} icon the new text style to set.
* @return {bemap.Marker} this
*/
bemap.Marker.prototype.setTextStyle = function(textStyle) {
this.textStyle = textStyle;
return this;
};
/**
* Return the bemap.Coordinate. See bemap.Coordinate.
* @public
* @return {bemap.Coordinate} Return the bemap.Coordinate. See bemap.Coordinate.
*/
bemap.Marker.prototype.getCoordinate = function() {
return this.coordinate;
};
/**
* Set the coordinates of the marker.
* @public
* @param {bemap.Coordinate} coordinate the new coordinates to set.
* @return {bemap.Marker} this
*/
bemap.Marker.prototype.setCoordinate = function(coordinate) {
this.coordinate = coordinate;
if (this.native && this.map) {
this.map.setCoordinateMarker(this);
}
return this;
};
/**
* Remove the Marker from the layer.
* @public
* @return {bemap.Marker} this
*/
bemap.Marker.prototype.remove = function() {
if (this.map !== null && bemap.inheritsof(this.map, bemap.Map)) {
this.map.removeMarker(this);
}
return this;
};
/**
* Set the listner when an specified eventType occur on bemap.Marker.
* @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.Marker} this.
*/
bemap.Marker.prototype.on = function(eventType, callback, options) {
if (this.map !== null && bemap.inheritsof(this.map, bemap.Map)) {
this.map.onMarker(this, eventType, callback, options);
}
return this;
};
/**
* Define the draggable capability for bemap.Marker.
* @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.Marker.prototype.draggable = function(callback, options) {
if (this.map !== null && bemap.inheritsof(this.map, bemap.Map)) {
return this.map.draggableMarker(this, callback, options);
}
return new bemap.listener();
};