/* eslint-disable */
|
(function (window) {
|
|
L.Icon.Pulse = L.DivIcon.extend({
|
|
options: {
|
className: '',
|
iconSize: [12, 12],
|
fillColor: 'red',
|
color: 'red',
|
animate: true,
|
heartbeat: 1,
|
},
|
|
initialize: function (options) {
|
L.setOptions(this, options)
|
|
// css
|
|
var uniqueClassName = 'lpi-' + new Date().getTime() + '-' + Math.round(Math.random() * 100000)
|
|
var before = ['background-color: ' + this.options.fillColor]
|
var after = [
|
|
'box-shadow: 0 0 6px 2px ' + this.options.color,
|
|
'animation: pulsate ' + this.options.heartbeat + 's ease-out',
|
'animation-iteration-count: infinite',
|
'animation-delay: ' + (this.options.heartbeat + .1) + 's',
|
]
|
|
if (!this.options.animate) {
|
after.push('animation: none')
|
after.push('box-shadow:none')
|
}
|
|
var css = [
|
'.' + uniqueClassName + '{' + before.join(';') + ';}',
|
'.' + uniqueClassName + ':after{' + after.join(';') + ';}',
|
].join('')
|
|
var el = document.createElement('style')
|
if (el.styleSheet) {
|
el.styleSheet.cssText = css
|
} else {
|
el.appendChild(document.createTextNode(css))
|
}
|
|
document.getElementsByTagName('head')[0].appendChild(el)
|
|
// apply css class
|
|
this.options.className = this.options.className + ' leaflet-pulsing-icon ' + uniqueClassName
|
|
// initialize icon
|
|
L.DivIcon.prototype.initialize.call(this, options)
|
|
}
|
})
|
|
L.icon.pulse = function (options) {
|
return new L.Icon.Pulse(options)
|
}
|
|
L.Marker.Pulse = L.Marker.extend({
|
initialize: function (latlng, options) {
|
options.icon = L.icon.pulse(options)
|
L.Marker.prototype.initialize.call(this, latlng, options)
|
}
|
})
|
|
L.marker.pulse = function (latlng, options) {
|
return new L.Marker.Pulse(latlng, options)
|
}
|
|
})(window)
|