/**
* Add a bemap.Polyline to the layer
* @public
* @param {bemap.Polyline} bemap.Polyline.
* @param {object} options
* @return {bemap.LeafletMap}
*/
bemap.LeafletMap.prototype.addPolyline = function(polyline, options) {
if (polyline !== null && bemap.inheritsof(polyline, bemap.Polyline)) {
var style = polyline.getStyle();
var color = style.getColor();
polyline.native = L.polyline(polyline.getLatLonArrays(), {
color: color.getHex(),
opacity: color.getAlpha(),
weight: style.getWidth(),
bubblingMouseEvents: false,
dashArray: style.type === "dash" ? "10":""
});
if (polyline.map === null) {
polyline.map = this;
}
var opts = options || {};
var l = null;
if (opts.layer !== undefined && (bemap.inheritsof(opts.layer, bemap.VectorLayer))) {
l = opts.layer;
} else {
l = this.getLayerByName(bemap.Map.DEFAULT_LAYER.POLYLINE);
if (l === null) {
l = new bemap.VectorLayer({
name: bemap.Map.DEFAULT_LAYER.POLYLINE
});
this.addLayer(l);
}
}
if (polyline.layer === null) {
polyline.layer = l;
}
polyline.native.addTo(l.native);
}
return this;
};
/**
* Remove a polyline from his layer.
* @public
* @param {bemap.Polyline} polyline the polyline object to remove.
*/
bemap.LeafletMap.prototype.removePolyline = function(polyline) {
if (polyline !== null && polyline.layer !== null && polyline.layer.native !== null && bemap.inheritsof(polyline, bemap.Polyline)) {
polyline.map.native.removeLayer(polyline.native);
polyline.layer = null;
polyline.map = null;
}
return this;
};
/**
* Set the listner when an specified eventType occur on bemap.Polyline.
* @public
* @param {bemap.Polyline} polyline
* @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.Listener} this.
*/
bemap.LeafletMap.prototype.onPolyline = function(polyline, eventType, callback, options) {
var opts = options ? options : {};
var nativeListener = polyline.native.on(eventType, function(evt) {
var mapEvent = new bemap.MapEvent({
native: evt,
bemapObject: polyline,
x: evt.containerPoint ? evt.containerPoint.x : undefined,
y: evt.containerPoint ? evt.containerPoint.y : undefined,
coordinate: evt.latlng ? new bemap.Coordinate(evt.latlng.lng, evt.latlng.lat) : undefined,
properties: options,
map: this
});
callback(mapEvent);
});
var listener = new bemap.Listener({
native: nativeListener,
callback: callback,
key: eventType,
bemapObject: polyline
});
return listener;
};