diff --git a/dist/longdomap.markercluster-src.js b/dist/longdomap.markercluster-src.js index 8d03083..d092dc3 100644 --- a/dist/longdomap.markercluster-src.js +++ b/dist/longdomap.markercluster-src.js @@ -254,6 +254,7 @@ var _default = function _default(options) { this.maxZoom = options.maxZoom || null; this.minClusterSize = options.minClusterSize || 2; + this.textColor = options.textColor || 'black'; this.gridSize = options.gridSize || 120; this.clusterRadius = options.clusterRadius || this.gridSize; this.averageCenter = options.averageCenter; @@ -365,7 +366,7 @@ var ClusterIcon = /*#__PURE__*/function () { if (mz && zoom > mz || zoom === 20) { while (len--) { - var _marker = this._markers[len]; + var _marker = this._cluster._markers[len]; if (!_marker.active()) { this._cluster._map.Overlays.add(_marker); @@ -643,6 +644,7 @@ var IconLoader = /*#__PURE__*/function () { elm.style.marginLeft = '-22px'; elm.style.marginTop = '-22px'; elm.style.overflow = 'hidden'; + elm.style.color = "".concat(this._config.textColor); elm.className = 'marker-cluster marker-cluster-small leaflet-marker-icon'; result.html = elm.outerHTML; result.size = { @@ -660,7 +662,7 @@ var IconLoader = /*#__PURE__*/function () { _elm.style.marginTop = "-".concat(img.height / 2, "px"); _elm.style.background = "url('".concat(encodeURI(img.src), "') no-repeat center top"); _elm.style.lineHeight = _elm.style.height; - _elm.style.color = 'black'; + _elm.style.color = "".concat(this._config.textColor); _elm.style.fontWeight = 'bold'; _elm.style.textAlign = 'center'; result.html = _elm.outerHTML; diff --git a/dist/longdomap.markercluster-src.js.map b/dist/longdomap.markercluster-src.js.map index 04bc47d..cbc21ff 100644 --- a/dist/longdomap.markercluster-src.js.map +++ b/dist/longdomap.markercluster-src.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://lmc/webpack/bootstrap","webpack://lmc/./src/Cluster.js","webpack://lmc/./src/ConfigHandler.js","webpack://lmc/./src/Icon.js","webpack://lmc/./src/LLBBox.js","webpack://lmc/./src/MarkerCluster.js","webpack://lmc/./src/index.js"],"names":["longdo","window","markerCluster","config","iloader","_markerCluster","_config","_map","_center","_markers","_bounds","_clusterIcon","ClusterIcon","marker","tile","location","_calculateBounds","averageCenter","Util","averageLocation","Projections","EPSG3857","isAdded","push","drawMarkerArea","drawArea","swarmModeEnabled","swarmAlg","_gridids","LLBBox","generateFrom","boundOfTile","getNxNGridCord","swarmGridSize","remove","length","removeArea","generateRect","extendSize","gridSize","Math","pow","zoom","isLocInBounds","setSums","setCenter","show","options","maxZoom","minClusterSize","clusterRadius","parseInt","styles","swarmGridLength","swarmMarkersMaxLimit","swarmMarkersAmountAdjust","swarmMarkersMaxAmountPerTile","swarmMarkersConstPerGrid","cluster","_cluster","_iloader","_sums","_clusterMarker","Marker","getIcon","OverlayWeight","Top","len","pos","active","Overlays","add","mz","move","setLocation","_poly","Polygon","getRectVertex","amounts","Array","fill","sum","m","idx","u","v","_calculateMarkersDispAmount","amount","swarmAlg2Decider","modsig","n","inmax","outmax","z","result","round","exp","_maxDispAmount","_maxClusterSize","num","center","sums","element","changeNumber","IconLoader","markercluster","_images","Map","ready","useDefault","loadStyles","url","width","height","minThreshold","callback","img","Image","set","that","onload","get","values","every","elm","resetViewport","_createClusters","src","keys","sort","elm1","elm2","style","load","index","document","createElement","elm3","appendChild","marginLeft","marginTop","overflow","className","html","outerHTML","size","background","encodeURI","lineHeight","color","fontWeight","textAlign","children","innerText","toLocaleString","list","locations","_projection","_locationList","slice","_originalLocationList","locationBound","minLon","minLat","maxLon","maxLat","b","filter","e","empty","loc","contains","diff","maxy","latToNorm","miny","normToLat","map","xlen","ylen","_lat2y","lonoffset","lon","yoffset","lat","xid","floor","yid","y","atan","PI","log","tan","bound","loc1","loc2","LLCircle","radius","sqrad","Error","MarkerCluster","_clusters","_prevZoom","_ready","overlay","Config","Event","bind","setSelectedMarker","cl","l","len2","s","markers","shuffle","i","r","random","temp","_overlay","classList","mapBounds","bounds","_addToClosestCluster","_addToTiledCluster","finalize","distance","Number","POSITIVE_INFINITY","clusterToAddTo","cen","d","isMarkerInClusterBounds","addMarker","Cluster","locationToTile","point","locationToPoint","pointToTile","indexOf","splice","removed","_removeMarker","markersCopy"],"mappings":"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","file":"longdomap.markercluster-src.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/index.js\");\n","import {ClusterIcon} from './Icon';\nimport {LLBBox} from './LLBBox';\nconst longdo = window.longdo;\n/**\n * class for cluster\n * @export Cluster\n * @class Cluster\n */\nexport default class{\n /**\n * Creates an isntance of Cluster\n * @param {MarkerCluster} markerCluster MarkerCluster instance\n * @param {ConfigHandler} config config variables\n * @param {IconLoader} iloader IconLoader instance\n */\n constructor(markerCluster,config,iloader){\n this._markerCluster = markerCluster;\n this._config = config;\n this._map = markerCluster._map;\n \n this._center = null;\n this._markers = [];\n this._bounds = null;\n this._clusterIcon = new ClusterIcon(this,this._config,iloader);\n }\n\n /**\n * add marker to the cluster\n * @param {longdo.Marker} marker marker to be added\n * @param {longdo.Tile} [tile] tile including marker(optional), needed only in swarm mode 1.\n * @returns {undefined}\n */\n addMarker(marker,tile){\n if(!this._center){\n this._center = marker.location();\n this._calculateBounds();\n }else{\n if(this._config.averageCenter){\n this._center = longdo.Util.averageLocation(longdo.Projections.EPSG3857,\n this._center,marker.location());\n this._calculateBounds();\n }\n }\n marker.isAdded = true;\n this._markers.push(marker);\n\n if(this._config.drawMarkerArea){\n this._bounds.drawArea(this._map);\n }\n if(this._config.swarmModeEnabled && this._config.swarmAlg === 1){\n if(!this._gridids){\n this._gridids = [];\n }\n this._gridids.push(LLBBox.generateFrom(\n longdo.Util.boundOfTile(longdo.Projections.EPSG3857,tile)\n ).getNxNGridCord(marker.location(),this._config.swarmGridSize));\n }\n return true;\n }\n /**\n * remove icon & itself\n * @returns {undefined}\n */\n remove(){\n this._clusterIcon.remove();\n this._markers.length = 0;\n delete this._markers;\n this._bounds.removeArea(this._map);\n }\n\n /**\n * calculate cluster bound\n * @returns {undefined}\n */\n _calculateBounds(){\n this._bounds = LLBBox.generateRect(this._center).extendSize(this._config.gridSize*Math.pow(2,-this._map.zoom())); \n }\n\n /**\n * returns whether marker is inside cluster bounds\n * @param {longdo.Marker} marker marker to be checked\n * @returns {boolean} If marker is inside cluster bound, returns true\n */\n isMarkerInClusterBounds(marker){\n return this._bounds.isLocInBounds(marker.location());\n }\n /**\n * update icon's style and position and then show on map\n * @returns {undefined}\n */\n finalize(){\n this._clusterIcon.setSums(this._markers.length);\n this._clusterIcon.setCenter(this._center);\n this._clusterIcon.show();\n }\n}","/**\n * class for carrying config/option values\n * @export ConfigHandler\n * @class ConfigHandler\n */\nexport default class {\n constructor(options){\n this.maxZoom = options.maxZoom || null;\n this.minClusterSize = options.minClusterSize || 2;\n this.gridSize = options.gridSize || 120;\n this.clusterRadius = options.clusterRadius || this.gridSize;\n this.averageCenter = options.averageCenter;\n this.drawMarkerArea = options.drawMarkerArea;\n this.swarmModeEnabled = options.swarmModeEnabled;\n this.swarmAlg = options.swarmAlg ? parseInt(options.swarmAlg,10) : null;\n this.styles = options.styles || null;\n this.swarmGridLength = options.swarmGridLength ? parseInt(options.swarmGridLength,10) : null;\n this.swarmMarkersMaxLimit = options.swarmMarkersMaxLimit ? parseInt(options.swarmMarkersMaxLimit,10) : null;\n this.swarmMarkersAmountAdjust = options.swarmMarkersAmountAdjust;\n this.swarmMarkersMaxAmountPerTile = options.swarmMarkersMaxAmountPerTile ? parseInt(options.swarmMarkersMaxAmountPerTile,10) : null;\n this.swarmMarkersConstPerGrid = options.swarmMarkersConstPerGrid ? parseInt(options.swarmMarkersConstPerGrid,10) : null;\n }\n}","/** @module Icon */\nconst longdo = window.longdo;\n/**\n * Class for managing cluster's icon & children markers' icons\n * @export ClusterIcon\n * @class ClusterIcon\n */\nexport class ClusterIcon{\n /**\n *Creates an instance of ClusterIcon.\n * @param {Cluster} cluster cluster in charge of this\n * @param {ConfigHandler} config config variables\n * @param {IconLoader} iloader cluster icon carrier\n * @memberof ClusterIcon\n */\n constructor(cluster,config,iloader){\n this._cluster = cluster;\n this._config = config;\n this._iloader = iloader;\n this._center = null;\n this._map = cluster._map;\n this._sums = null;\n this._clusterMarker = new longdo.Marker({\"lat\":0,\"lon\":0},{\n \"icon\": this._cluster._markerCluster._iloader.getIcon(0),\n \"weight\": longdo.OverlayWeight.Top\n });\n }\n\n /**\n * show cluster icons & marker icons if needed\n * @returns {undefined}\n * @memberof ClusterIcon\n */\n show(){\n let len = this._cluster._markers.length;\n if(!this._config.swarmModeEnabled){\n const pos = this._center;\n if (this._cluster._markers.length < this._config.minClusterSize){\n const marker = this._cluster._markers[0];\n if(!marker.active()){\n this._map.Overlays.add(marker);\n }\n return;\n }\n const zoom = this._map.zoom();\n const mz = this._config.maxZoom;\n if(mz && zoom > mz || zoom === 20){\n while(len--){\n const marker = this._markers[len];\n if(!marker.active()){\n this._cluster._map.Overlays.add(marker);\n }\n }\n return;\n }\n if(this._clusterMarker.active()){\n this._map.Overlays.move(this._clusterMarker,pos);\n }else{\n this._clusterMarker.setLocation(pos);\n this._map.Overlays.add(this._clusterMarker);\n if(this._poly){\n this._map.Overlays.remove(this._poly);\n }\n if(this._config.drawMarkerArea){\n this._poly = new longdo.Polygon(this._cluster._bounds.getRectVertex(),{\"fillColor\": \"rgba(0,0,0,0.3)\"});\n this._map.Overlays.add(this._poly);\n }\n }\n }else if(this._config.swarmAlg === 1){\n //TODO\n const amounts = new Array(this._config.swarmGridLength*this._config.swarmGridLength).fill(0);\n let sum = 0;\n while(len--){\n if(sum >= this._config.swarmMarkersMaxAmountPerTile){\n break;\n }\n const m = this._cluster._markers[len];\n const tile = this._cluster._gridids[len];\n const idx = tile.u * this._config.swarmGridLength + tile.v;\n if(amounts[idx] % this._config.swarmMarkersConstPerGrid === 0){\n if(!m.active()){\n this._map.Overlays.add(m);\n }\n sum++;\n }\n amounts[idx]++;\n }\n }else if(this._config.swarmAlg === 2){\n this._calculateMarkersDispAmount();\n let amount = 0;\n while(len--){\n if(amount > this._config.swarmMarkersMaxLimit){\n break;\n }\n const m = this._cluster._markers[len];\n if(this.swarmAlg2Decider(amount,this._cluster._markers.length-len-1)){\n if(!m.active()){\n this._map.Overlays.add(m);\n }\n amount++;\n }\n }\n return;\n }\n }\n _calculateMarkersDispAmount(){\n const modsig = function(n,inmax,outmax){\n if(n === 0){\n return 0;\n }\n const z = n / inmax * 49 - 13;\n const result = Math.round(outmax*(1 / (1 + Math.exp(-z))));\n return result === 0 ? 1 : result;\n };\n this._maxDispAmount = modsig(this._cluster._markers.length,this._cluster._markerCluster._maxClusterSize,this._config.swarmMarkersMaxLimit);\n }\n swarmAlg2Decider(amount,num){\n if(this._config.swarmMarkersAmountAdjust){\n return this._maxDispAmount > amount;\n }\n return amount <= 5 || num % 10 === 0;\n }\n /**\n * remove cluster icon from the map\n * @memberof ClusterIcon\n * @returns {undefined}\n */\n remove(){\n this._map.Overlays.remove(this._clusterMarker);\n if(this._poly){\n this._map.Overlays.remove(this._poly);\n this._poly = null;\n }\n }\n /**\n * set position where cluster icon will be rendered\n * @param {longdo.Location} center position for cluster icon to be rendered\n * @memberof ClusterIcon\n * @returns {undefined}\n */\n setCenter(center){\n this._center = center;\n }\n /**\n * set number displaying in cluster\n * @param {number} sums numbers to change to\n * @returns {undefined}\n * @memberof ClusterIcon\n */\n setSums(sums){\n if(this._sums && sums === this._sums){return;}\n this._sums = sums;\n if(this._clusterMarker && this._clusterMarker.element()){\n this._iloader.changeNumber(this._clusterMarker.element(),this._sums);\n }\n }\n}\n\n/**\n * class for loading cluser icons & carrying them\n * @export IconLoader\n * @class IconLoader\n */\nexport class IconLoader{\n\n /**\n *Creates an instance of IconLoader.\n * @param {MarkerCluster} markercluster MarkerCluster instance\n * @param {ConfigHandler} config config variables\n * @memberof IconLoader\n */\n constructor(markercluster,config){\n this._markerCluster = markercluster;\n this._config = config;\n this._images = new Map();\n this.ready = true;\n this.useDefault = true;\n if(this._config.styles){\n this.loadStyles(this._config.styles);\n }\n }\n /**\n * load style of icons\n * @param {string} url url of icon image\n * @param {number} width width of the image\n * @param {number} height height of the image\n * @param {number} minThreshold minimum threshold of size of cluster\n * @param {Function} [callback] callback function to be called on finishing loading\n * @returns {number} index of loaded style\n * @memberof IconLoader\n */\n load(url,width,height,minThreshold,callback){\n this.ready = false;\n this.useDefault = false;\n const img = new Image(width,height);\n this._images.set(img,{\"ready\":false,\"minThreshold\":minThreshold});\n const that = this;\n img.onload = function(){\n that._images.get(img).ready = true;\n if([...that._images.values()].every(elm => elm.ready)){\n that.ready = true;\n that._markerCluster.resetViewport();\n that._markerCluster._createClusters();\n }\n if(callback){\n callback();\n }\n };\n img.src = url;\n return this._images.keys.length - 1;\n }\n /**\n * load styles config value\n * @param {Array} styles styles to be loaded\n * @memberof IconLoader\n * @returns {undefined}\n */\n loadStyles(styles){\n styles.sort((elm1,elm2) => \n elm1.minThreshold < elm2.minThreshold ? 1 : elm1.minThreshold === elm2.minThreshold ?\n 0 : -1); \n let len = styles.length;\n const that = this;\n while(len--){\n const style = styles[len];\n this.load(style.url,style.width,style.height,style.minThreshold,len === 0 ? ()=>(that.ready = true) : null);\n }\n }\n /**\n * returns icon config object according to longdo Marker icon syntax\n * @param {number} index index number to get icon style\n * @returns {Object} icon config values object \n * @memberof IconLoader\n */\n getIcon(index){\n const result = {\"offset\": { \"x\": 0, \"y\": 0}};\n if(this.useDefault || typeof index === 'undefined'){\n const elm = document.createElement(\"div\");\n const elm2 = document.createElement('div');\n const elm3 = document.createElement('span');\n elm.appendChild(elm2);\n elm2.appendChild(elm3);\n elm.style.width = '44px';\n elm.style.height = '44px';\n elm.style.marginLeft = '-22px';\n elm.style.marginTop = '-22px';\n elm.style.overflow = 'hidden';\n elm.className = 'marker-cluster marker-cluster-small leaflet-marker-icon';\n result.html = elm.outerHTML;\n result.size = {\"width\":44,\"height\":44};\n }else{\n const img = [...this._images.keys()][index];\n const elm = document.createElement(\"div\");\n elm.style.width = `${img.width}px`;\n elm.style.height = `${img.height}px`;\n elm.style.marginLeft = `-${img.width/2}px`;\n elm.style.marginTop = `-${img.height/2}px`;\n elm.style.background = `url('${encodeURI(img.src)}') no-repeat center top`;\n elm.style.lineHeight = elm.style.height;\n elm.style.color = 'black';\n elm.style.fontWeight = 'bold';\n elm.style.textAlign = 'center';\n result.html = elm.outerHTML;\n result.size = {\"width\":img.width,\"height\":img.height};\n }\n return result;\n }\n /**\n * change displaying number in cluster\n * @param {HTMLElement} element element of cluster needing to be made changes\n * @param {number} num number to change to \n * @memberof IconLoader\n * @returns {undefined}\n */\n changeNumber(element,num){\n if(this.useDefault){\n element.children[0].children[0].children[0].innerText = `${num.toLocaleString()}`;\n if(num < 10){\n element.children[0].className = 'marker-cluster marker-cluster-small';\n }else if(num < 100){\n element.children[0].className = 'marker-cluster marker-cluster-medium';\n }else{\n element.children[0].className = 'marker-cluster marker-cluster-large';\n }\n }else{\n element.children[0].innerText = `${num.toLocaleString()}`;\n const list = [...this._images.keys()];\n let len = list.length;\n while(len--){\n const img = list[len];\n if(num >= this._images.get(img).minThreshold){\n let elm = element;\n elm.style.width = `${img.width}px`;\n elm.style.height = `${img.height}px`;\n elm = elm.children[0];\n elm.style.background = `url('${encodeURI(img.src)}') no-repeat center top`;\n elm.style.width = `${img.width}px`;\n elm.style.height = `${img.height}px`;\n elm.style.lineHeight = elm.style.height;\n break;\n }\n }\n }\n }\n}","const longdo = window.longdo;\n/**\n * class for carrying bound information\n * @export LLBBox\n * @class LLBBox\n */\nexport class LLBBox{\n /**\n *Creates an instance of LLBBox.\n * @param {Array} locations array of locations to create bound\n * @memberof LLBBox\n */\n constructor(locations){\n this._projection = longdo.Projections.EPSG3857;\n this._locationList = locations.slice();\n this._originalLocationList = this._locationList.slice();\n if(locations.length > 0){\n this._bounds = longdo.Util.locationBound(this._locationList);\n }\n }\n\n /**\n * generate the instance set up bound\n * @static\n * @param {longdo.Bound} bound bound to be set up\n * @returns {LLBBox} instance of this class\n * @memberof LLBBox\n */\n static generateFrom(bound){\n return new LLBBox(\n [\n {\"lon\":bound.minLon,\"lat\":bound.minLat},\n {'lon':bound.maxLon,'lat':bound.maxLat}]);\n }\n /**\n * generate the instance set up rect bound from 1 or 2 vertex\n * @static\n * @param {longdo.Location} loc1 1st vertex\n * @param {longdo.Location} [loc2] 2nd vertex, if not provided, it will be as the same as loc1\n * @returns {LLBBox} instance of this class\n * @memberof LLBBox\n */\n static generateRect(loc1,loc2){\n if(!loc2){\n loc2 = loc1;\n }\n return new LLBBox([loc1,loc2]);\n }\n\n /**\n * returns bound\n * @returns {longdo.Bound} bound\n * @memberof LLBBox\n */\n getBounds(){\n return {'minLon':this._bounds.minLon,\n 'minLat':this._bounds.minLat,\n 'maxLon':this._bounds.maxLon,\n 'maxLat':this._bounds.maxLat};\n }\n /**\n * returns Left-Top of the bound\n * @returns {longdo.Location} left-top vertex of the bound\n * @memberof LLBBox\n */\n LT(){\n return {\"lon\": this._bounds.minLon, \"lat\": this._bounds.maxLat};\n }\n /**\n * returns Right-Top of the bound\n * @returns {londgo.Location} right-top vertex of the bound\n * @memberof LLBBox\n */\n RT(){\n return {\"lon\": this._bounds.maxLon, \"lat\": this._bounds.maxLat}; \n }\n /**\n * returns Left-Bottom of the bound\n * @returns {longdo.Location} left-bottom vertex of the bound\n * @memberof LLBBox\n */\n LB(){\n return {\"lon\": this._bounds.minLon, \"lat\": this._bounds.minLat};\n }\n /**\n * returns right-bottom of the bound\n * @returns {longdo.Locaton} right-bottom vertex of the bound\n * @memberof LLBBox\n */\n RB(){\n return {\"lon\": this._bounds.maxLon, \"lat\": this._bounds.minLat};\n }\n getMinimumBounds(){\n const b = longdo.Util.locationBound(this._originalLocationList);\n return b;\n }\n\n /**\n * add location to bound and extend bound in order to include added location\n * @param {longdo.Location} location location to be added\n * @memberof LLBBox\n * @returns {undefined}\n */\n add(location){\n this._locationList.push(location);\n this._originalLocationList.push(location);\n this._bounds = longdo.Util.locationBound(this._locationList);\n }\n /**\n * remove location from the bound\n * @param {longdo.Location} location location to be removed\n * @memberof LLBBox\n * @returns {undefined}\n */\n remove(location){\n this._locationList = this._locationList.filter((e) => e !== location);\n this._originalLocationList = this._originalLocationList.filter((e) => e !== location);\n this._bounds = this.empty() ? null: longdo.Util.locationBound(this._locationList);\n }\n\n /**\n * return whether including no locations or not\n * @returns {boolean} return true if containing no location\n * @memberof LLBBox\n */\n empty(){return this._locationList.length === 0;}\n\n /**\n * returns array of locations included itself\n * @returns {Array} array of locations included in itself\n * @memberof LLBBox\n */\n getLocations(){\n return this._locationList.slice();\n }\n /**\n * returns whether given location is within its bound\n * @param {longdo.Location} loc location to be checked\n * @returns {boolaen} returns true if location is in bound\n * @memberof LLBBox\n */\n isLocInBounds(loc){\n const result = longdo.Util.contains(loc,this.getRectVertex());\n return result === null ? true : result;\n }\n /**\n * extend bound size\n * @param {number} diff size to extends\n * @returns {LLBBox} itself\n * @memberof LLBBox\n */\n extendSize(diff){\n const b = this._bounds;\n const maxy = this._projection.latToNorm(b.maxLat) + diff;\n const miny = this._projection.latToNorm(b.minLat) - diff;\n this._locationList.push({\"lon\":b.minLon - diff,\"lat\": this._projection.normToLat(miny)});\n this._locationList.push({\"lon\":b.minLon - diff,\"lat\": this._projection.normToLat(maxy)});\n this._locationList.push({\"lon\":b.minLon + diff,\"lat\": this._projection.normToLat(miny)});\n this._locationList.push({\"lon\":b.maxLon + diff,\"lat\": this._projection.normToLat(maxy)});\n this._bounds = longdo.Util.locationBound(this._locationList);\n return this;\n }\n /**\n * returns array of vertex by order of drawing rect\n * @returns {Array} array of vertex locations\n * @memberof LLBBox\n */\n getRectVertex(){\n return [{\"lon\":this._bounds.minLon,\"lat\":this._bounds.minLat},\n {\"lon\":this._bounds.minLon,\"lat\":this._bounds.maxLat},\n {\"lon\":this._bounds.maxLon,\"lat\":this._bounds.maxLat},\n {\"lon\":this._bounds.maxLon,\"lat\":this._bounds.minLat}];\n }\n\n /**\n * draw polygon to show bound\n * @param {longdo.Map} map map for polygon to show\n * @memberof LLBBox\n * @returns {undefined}\n */\n drawArea(map){\n this._poly = new longdo.Polygon(this.getRectVertex());\n map.Overlays.add(this._poly);\n }\n /**\n * remove polygon from map\n * @param {longdo.Map} map map where the polygon will be removed\n * @memberof LLBBox\n * @returns {undefined}\n */\n removeArea(map){\n if(this._poly && this._poly.active()){\n map.Overlays.remove(this._poly);\n delete this._poly;\n }\n }\n\n /**\n * returns relative coordinates in given N x N grid\n * @param {longdo.Location} loc location to be checked\n * @param {number} n size of width,height of the grid\n * @returns {longdo.Tile} coordinates(Tile)\n * @memberof LLBBox\n */\n getNxNGridCord(loc,n){\n if(!this.isLocInBounds(loc)){\n return null;\n }\n const xlen = (this._bounds.maxLon - this._bounds.minLon) / n;\n const ylen = (this._lat2y(this._bounds.maxLat) - this._lat2y(this._bounds.minLat)) / n;\n let lonoffset = loc.lon - this._bounds.minLon;\n const yoffset = -this._lat2y(loc.lat) + this._lat2y(this._bounds.maxLat);\n const xid = Math.floor(lonoffset / xlen), yid = Math.floor(yoffset / ylen);\n return {\"u\": xid,\"v\": yid};\n }\n\n /*\n Adapted from https://wiki.openstreetmap.org/wiki/Mercator\n */\n /**\n * convert y pixel coordinate into latitude\n * @param {number} y pixel coordinate\n * @returns {number} latitude\n * @memberof LLBBox\n */\n _y2lat(y) { return (Math.atan(Math.exp(y / (180 / Math.PI))) / (Math.PI / 4) - 1) * 90; }\n /**\n * convert latitude into y pixel coordinate\n * @param {number} lat latitude\n * @returns {number} y pixel coordinate\n * @memberof LLBBox\n */\n _lat2y(lat) { return Math.log(Math.tan((lat / 90 + 1) * (Math.PI / 4) )) * (180 / Math.PI); }\n}\n\nexport class LLCircle{\n constructor(center,radius){\n this.center = center;\n this.sqrad = radius * radius;\n }\n}","/** @module MarkerCluster*/\nif(typeof window.longdo === 'undefined'){\n throw new Error('longdo API must be loaded before the longdomap markercluster plugin');\n}\nconst longdo = window.longdo;\nimport {LLBBox} from \"./LLBBox\";\nimport Config from \"./ConfigHandler\";\nimport {IconLoader} from './Icon';\nimport Cluster from './Cluster';\n/**\n * Class for MarkerCluster\n *\n * @export MarkerCluser\n * @class MarkerCluster\n */\nexport default class MarkerCluster{\n\n /**\n *Creates an instance of MarkerCluster.\n * @param {longdo.Map} map Longdo Map instance\n * @param {Object} options Options for MarkerCluster\n * @memberof MarkerCluster\n */\n constructor(map, options){\n this._map = map;\n this._markers = [];\n this._clusters = [];\n this._prevZoom = 2;\n this._ready = false;\n this.overlay = [];\n this.config = new Config(options);\n this._iloader = new IconLoader(this,this.config);\n \n const that = this;\n this._map.Event.bind('ready',function() {\n if(!that._ready || !that._iloader.ready){return;}\n that._prevZoom = that._map.zoom;\n that.resetViewport();\n that._createClusters();\n });\n this._map.Event.bind('zoom', function (/*pivot*/){\n if(!that._ready || !that._iloader.ready){return;}\n that.resetViewport();\n // that._createClusters();\n });\n // this._map.Event.bind('drop',function() {\n // if(!that._ready || !that._iloader.ready){return;}\n // that.resetViewport();\n // that._createClusters();\n // });\n this._map.Event.bind('overlayClick', function(overlay){\n that.setSelectedMarker(overlay)\n if(!that._ready || !that._iloader.ready){return;}\n let len = that._clusters.length;\n while(len--){\n const cl = that._clusters[len];\n if(overlay === cl._clusterIcon._clusterMarker){\n const l = [];\n let len2 = cl._markers.length;\n while(len2--){\n l.push(cl._markers[len2].location());\n }\n that._map.bound(longdo.Util.locationBound(l));\n // setTimeout(function(){\n // that.resetViewport();\n // that._createClusters();\n // },10);\n return;\n }\n }\n });\n this._map.Event.bind('loadTile', function(s){\n if(s === 'start' || !that._ready || !that._iloader.ready){return;}\n that.resetViewport();\n that._createClusters();\n });\n }\n\n /**\n * add marker(s) to plugins's management\n * @param {longdo.Marker| Array} markers marker(s) to add\n * @memberof MarkerCluster\n * @returns {undefined}\n */\n addMarkers(markers){\n if(markers instanceof longdo.Marker){\n markers = [markers];\n }\n let len = markers.length;\n while(len--){\n const m = markers[len];\n this._markers.push(m);\n }\n if(this.config.swarmModeEnabled){\n this.shuffle();\n }\n }\n /**\n * randomize elements order in {@link MarkerCluster._markers}\n * using Fisher-Yates Algorithm\n * @memberof MarkerCluster\n * @returns {undefined}\n */\n shuffle(){\n for(let i = this._markers.length-1;i > 0; i--){\n const r = Math.floor(Math.random()*(i+1));\n const temp = this._markers[i];\n this._markers[i] = this._markers[r];\n this._markers[r] = temp;\n }\n }\n getSelectedMarker() {\n if(this.overlay) {\n return this.overlay;\n }\n return null\n }\n setSelectedMarker(_overlay) {\n if(_overlay && _overlay.element() && _overlay.element().classList.contains('ldmap_clickable')) {\n this.overlay = _overlay\n }\n }\n\n /**\n * start rendering if icons-loading finished\n * @memberof MarkerCluster\n * @returns {undefined}\n */\n render(){\n this._ready = true;\n if(this._iloader.ready){\n this.resetViewport();\n this._createClusters();\n }\n }\n /**\n * choose markers in Map bound & add to clusters\n * @memberof MarkerCluster\n * @returns {undefined}\n */\n _createClusters(){\n const mapBounds = LLBBox.generateFrom(this._map.bound());\n const bounds = mapBounds.extendSize(this.config.gridSize*Math.pow(2,-this._map.zoom()));\n let len = this._markers.length;\n while(len--){\n const m = this._markers[len];\n const loc = m.location();\n if(!m.isAdded && bounds.isLocInBounds(loc)){\n if(!this.config.swarmModeEnabled){\n this._addToClosestCluster(m);\n }else{\n if(this.config.swarmAlg === 2){\n this._addToClosestCluster(m);\n }else{\n this._addToTiledCluster(m);\n }\n }\n \n }\n }\n len = this._clusters.length;\n while(len--){\n const cl = this._clusters[len];\n cl.finalize();\n }\n }\n /**\n * add marker to the closest cluster if it is within cluster's grid. If not, create new one.\n * @param {longdo.Marker} marker marker to be added\n * @memberof MarkerCluster\n * @returns {undefined}\n */\n _addToClosestCluster(marker){\n let distance = Number.POSITIVE_INFINITY;\n let clusterToAddTo = null;\n let len = this._clusters.length;\n while(len--){\n const cluster = this._clusters[len];\n const cen = cluster._center;\n if(cen){\n const d = longdo.Util.distance([cen,marker.location()]);\n if(d < distance){\n distance = d;\n clusterToAddTo = cluster;\n }\n }\n }\n if(clusterToAddTo && clusterToAddTo.isMarkerInClusterBounds(marker)){\n clusterToAddTo.addMarker(marker);\n if(this._maxClusterSize && this._maxClusterSize < clusterToAddTo._markers.length){\n this._maxClusterSize = clusterToAddTo._markers.length;\n }else{\n this._maxClusterSize = clusterToAddTo._markers.length;\n }\n }else{\n const cluster = new Cluster(this,this.config,this._iloader);\n cluster.addMarker(marker);\n this._clusters.push(cluster);\n if(this._maxClusterSize && this._maxClusterSize < cluster._markers.length){\n this._maxClusterSize = cluster._markers.length;\n }else{\n this._maxClusterSize = cluster._markers.length;\n }\n }\n }\n\n /**\n * add marker to clusters in charge of its tile\n * @param {longdo.Marker} marker marker to be added\n * @returns {undefined}\n * @memberof MarkerCluster\n */\n _addToTiledCluster(marker){\n const that = this;\n const locationToTile = function(loc){\n const point = longdo.Util.locationToPoint(longdo.Projections.EPSG3857,loc);\n point.z = 20-that._map.zoom();\n return longdo.Util.pointToTile(point);\n };\n const tile = locationToTile(marker.location());\n let len = this._clusters.length;\n while(len--){\n const cluster = this._clusters[len];\n if(cluster.u === tile.u && cluster.v === tile.v){\n cluster.addMarker(marker,tile);\n return;\n }\n }\n const cluster = new Cluster(this,this.config,this._iloader);\n cluster.u = tile.u;\n cluster.v = tile.v;\n cluster.addMarker(marker,tile);\n this._clusters.push(cluster);\n }\n\n _removeMarker(marker){\n const index = this._markers.indexOf(marker);\n if(index === -1){\n return false;\n }\n this._map.Overlays.remove(marker);\n this._markers.splice(index,1);\n return true;\n }\n\n removeMarker(marker){\n const removed = this._removeMarker(marker);\n if(removed){\n this.resetViewport();\n this._createClusters();\n return true;\n }\n return false;\n }\n\n removeMarkers(markers){\n const markersCopy = markers === this._markers ? this._markers.slice() : markers;\n let removed = false;\n let len = markersCopy.length;\n while(len--){\n const r = this._removeMarker(markersCopy[len]);\n removed = removed || r;\n }\n if(removed){\n this.resetViewport();\n this._createClusters();\n return true;\n }\n return false;\n }\n\n clearMarkers(){\n this.resetViewport();\n let len = this._markers.length;\n while(len--){\n const marker = this._markers[len];\n this._map.Overlays.remove(marker);\n }\n this._markers = [];\n }\n\n /**\n * remove clusters & markers from the map, then clear clusters\n * @memberof MarkerCluster\n * @returns {undefined}\n */\n resetViewport(){\n let len = this._clusters.length;\n while(len--){\n this._clusters[len].remove();\n }\n len = this._markers.length;\n while(len--){\n const marker = this._markers[len];\n marker.isAdded = false;\n this._map.Overlays.remove(marker);\n }\n this._clusters = [];\n }\n}\n","export {default as MarkerCluster} from './MarkerCluster';\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://lmc/webpack/bootstrap","webpack://lmc/./src/Cluster.js","webpack://lmc/./src/ConfigHandler.js","webpack://lmc/./src/Icon.js","webpack://lmc/./src/LLBBox.js","webpack://lmc/./src/MarkerCluster.js","webpack://lmc/./src/index.js"],"names":["longdo","window","markerCluster","config","iloader","_markerCluster","_config","_map","_center","_markers","_bounds","_clusterIcon","ClusterIcon","marker","tile","location","_calculateBounds","averageCenter","Util","averageLocation","Projections","EPSG3857","isAdded","push","drawMarkerArea","drawArea","swarmModeEnabled","swarmAlg","_gridids","LLBBox","generateFrom","boundOfTile","getNxNGridCord","swarmGridSize","remove","length","removeArea","generateRect","extendSize","gridSize","Math","pow","zoom","isLocInBounds","setSums","setCenter","show","options","maxZoom","minClusterSize","textColor","clusterRadius","parseInt","styles","swarmGridLength","swarmMarkersMaxLimit","swarmMarkersAmountAdjust","swarmMarkersMaxAmountPerTile","swarmMarkersConstPerGrid","cluster","_cluster","_iloader","_sums","_clusterMarker","Marker","getIcon","OverlayWeight","Top","len","pos","active","Overlays","add","mz","move","setLocation","_poly","Polygon","getRectVertex","amounts","Array","fill","sum","m","idx","u","v","_calculateMarkersDispAmount","amount","swarmAlg2Decider","modsig","n","inmax","outmax","z","result","round","exp","_maxDispAmount","_maxClusterSize","num","center","sums","element","changeNumber","IconLoader","markercluster","_images","Map","ready","useDefault","loadStyles","url","width","height","minThreshold","callback","img","Image","set","that","onload","get","values","every","elm","resetViewport","_createClusters","src","keys","sort","elm1","elm2","style","load","index","document","createElement","elm3","appendChild","marginLeft","marginTop","overflow","color","className","html","outerHTML","size","background","encodeURI","lineHeight","fontWeight","textAlign","children","innerText","toLocaleString","list","locations","_projection","_locationList","slice","_originalLocationList","locationBound","minLon","minLat","maxLon","maxLat","b","filter","e","empty","loc","contains","diff","maxy","latToNorm","miny","normToLat","map","xlen","ylen","_lat2y","lonoffset","lon","yoffset","lat","xid","floor","yid","y","atan","PI","log","tan","bound","loc1","loc2","LLCircle","radius","sqrad","Error","MarkerCluster","_clusters","_prevZoom","_ready","overlay","Config","Event","bind","setSelectedMarker","cl","l","len2","s","markers","shuffle","i","r","random","temp","_overlay","classList","mapBounds","bounds","_addToClosestCluster","_addToTiledCluster","finalize","distance","Number","POSITIVE_INFINITY","clusterToAddTo","cen","d","isMarkerInClusterBounds","addMarker","Cluster","locationToTile","point","locationToPoint","pointToTile","indexOf","splice","removed","_removeMarker","markersCopy"],"mappings":"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","file":"longdomap.markercluster-src.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/index.js\");\n","import {ClusterIcon} from './Icon';\nimport {LLBBox} from './LLBBox';\nconst longdo = window.longdo;\n/**\n * class for cluster\n * @export Cluster\n * @class Cluster\n */\nexport default class{\n /**\n * Creates an isntance of Cluster\n * @param {MarkerCluster} markerCluster MarkerCluster instance\n * @param {ConfigHandler} config config variables\n * @param {IconLoader} iloader IconLoader instance\n */\n constructor(markerCluster,config,iloader){\n this._markerCluster = markerCluster;\n this._config = config;\n this._map = markerCluster._map;\n \n this._center = null;\n this._markers = [];\n this._bounds = null;\n this._clusterIcon = new ClusterIcon(this,this._config,iloader);\n }\n\n /**\n * add marker to the cluster\n * @param {longdo.Marker} marker marker to be added\n * @param {longdo.Tile} [tile] tile including marker(optional), needed only in swarm mode 1.\n * @returns {undefined}\n */\n addMarker(marker,tile){\n if(!this._center){\n this._center = marker.location();\n this._calculateBounds();\n }else{\n if(this._config.averageCenter){\n this._center = longdo.Util.averageLocation(longdo.Projections.EPSG3857,\n this._center,marker.location());\n this._calculateBounds();\n }\n }\n marker.isAdded = true;\n this._markers.push(marker);\n\n if(this._config.drawMarkerArea){\n this._bounds.drawArea(this._map);\n }\n if(this._config.swarmModeEnabled && this._config.swarmAlg === 1){\n if(!this._gridids){\n this._gridids = [];\n }\n this._gridids.push(LLBBox.generateFrom(\n longdo.Util.boundOfTile(longdo.Projections.EPSG3857,tile)\n ).getNxNGridCord(marker.location(),this._config.swarmGridSize));\n }\n return true;\n }\n /**\n * remove icon & itself\n * @returns {undefined}\n */\n remove(){\n this._clusterIcon.remove();\n this._markers.length = 0;\n delete this._markers;\n this._bounds.removeArea(this._map);\n }\n\n /**\n * calculate cluster bound\n * @returns {undefined}\n */\n _calculateBounds(){\n this._bounds = LLBBox.generateRect(this._center).extendSize(this._config.gridSize*Math.pow(2,-this._map.zoom())); \n }\n\n /**\n * returns whether marker is inside cluster bounds\n * @param {longdo.Marker} marker marker to be checked\n * @returns {boolean} If marker is inside cluster bound, returns true\n */\n isMarkerInClusterBounds(marker){\n return this._bounds.isLocInBounds(marker.location());\n }\n /**\n * update icon's style and position and then show on map\n * @returns {undefined}\n */\n finalize(){\n this._clusterIcon.setSums(this._markers.length);\n this._clusterIcon.setCenter(this._center);\n this._clusterIcon.show();\n }\n}","/**\n * class for carrying config/option values\n * @export ConfigHandler\n * @class ConfigHandler\n */\nexport default class {\n constructor(options){\n this.maxZoom = options.maxZoom || null;\n this.minClusterSize = options.minClusterSize || 2;\n this.textColor = options.textColor || 'black';\n this.gridSize = options.gridSize || 120;\n this.clusterRadius = options.clusterRadius || this.gridSize;\n this.averageCenter = options.averageCenter;\n this.drawMarkerArea = options.drawMarkerArea;\n this.swarmModeEnabled = options.swarmModeEnabled;\n this.swarmAlg = options.swarmAlg ? parseInt(options.swarmAlg,10) : null;\n this.styles = options.styles || null;\n this.swarmGridLength = options.swarmGridLength ? parseInt(options.swarmGridLength,10) : null;\n this.swarmMarkersMaxLimit = options.swarmMarkersMaxLimit ? parseInt(options.swarmMarkersMaxLimit,10) : null;\n this.swarmMarkersAmountAdjust = options.swarmMarkersAmountAdjust;\n this.swarmMarkersMaxAmountPerTile = options.swarmMarkersMaxAmountPerTile ? parseInt(options.swarmMarkersMaxAmountPerTile,10) : null;\n this.swarmMarkersConstPerGrid = options.swarmMarkersConstPerGrid ? parseInt(options.swarmMarkersConstPerGrid,10) : null;\n }\n}","/** @module Icon */\nconst longdo = window.longdo;\n/**\n * Class for managing cluster's icon & children markers' icons\n * @export ClusterIcon\n * @class ClusterIcon\n */\nexport class ClusterIcon{\n /**\n *Creates an instance of ClusterIcon.\n * @param {Cluster} cluster cluster in charge of this\n * @param {ConfigHandler} config config variables\n * @param {IconLoader} iloader cluster icon carrier\n * @memberof ClusterIcon\n */\n constructor(cluster,config,iloader){\n this._cluster = cluster;\n this._config = config;\n this._iloader = iloader;\n this._center = null;\n this._map = cluster._map;\n this._sums = null;\n this._clusterMarker = new longdo.Marker({\"lat\":0,\"lon\":0},{\n \"icon\": this._cluster._markerCluster._iloader.getIcon(0),\n \"weight\": longdo.OverlayWeight.Top\n });\n }\n\n /**\n * show cluster icons & marker icons if needed\n * @returns {undefined}\n * @memberof ClusterIcon\n */\n show(){\n let len = this._cluster._markers.length;\n if(!this._config.swarmModeEnabled){\n const pos = this._center;\n if (this._cluster._markers.length < this._config.minClusterSize){\n const marker = this._cluster._markers[0];\n if(!marker.active()){\n this._map.Overlays.add(marker);\n }\n return;\n }\n const zoom = this._map.zoom();\n const mz = this._config.maxZoom;\n if(mz && zoom > mz || zoom === 20){\n while(len--){\n const marker = this._cluster._markers[len];\n if(!marker.active()){\n this._cluster._map.Overlays.add(marker);\n }\n }\n return;\n }\n if(this._clusterMarker.active()){\n this._map.Overlays.move(this._clusterMarker,pos);\n }else{\n this._clusterMarker.setLocation(pos);\n this._map.Overlays.add(this._clusterMarker);\n if(this._poly){\n this._map.Overlays.remove(this._poly);\n }\n if(this._config.drawMarkerArea){\n this._poly = new longdo.Polygon(this._cluster._bounds.getRectVertex(),{\"fillColor\": \"rgba(0,0,0,0.3)\"});\n this._map.Overlays.add(this._poly);\n }\n }\n }else if(this._config.swarmAlg === 1){\n //TODO\n const amounts = new Array(this._config.swarmGridLength*this._config.swarmGridLength).fill(0);\n let sum = 0;\n while(len--){\n if(sum >= this._config.swarmMarkersMaxAmountPerTile){\n break;\n }\n const m = this._cluster._markers[len];\n const tile = this._cluster._gridids[len];\n const idx = tile.u * this._config.swarmGridLength + tile.v;\n if(amounts[idx] % this._config.swarmMarkersConstPerGrid === 0){\n if(!m.active()){\n this._map.Overlays.add(m);\n }\n sum++;\n }\n amounts[idx]++;\n }\n }else if(this._config.swarmAlg === 2){\n this._calculateMarkersDispAmount();\n let amount = 0;\n while(len--){\n if(amount > this._config.swarmMarkersMaxLimit){\n break;\n }\n const m = this._cluster._markers[len];\n if(this.swarmAlg2Decider(amount,this._cluster._markers.length-len-1)){\n if(!m.active()){\n this._map.Overlays.add(m);\n }\n amount++;\n }\n }\n return;\n }\n }\n _calculateMarkersDispAmount(){\n const modsig = function(n,inmax,outmax){\n if(n === 0){\n return 0;\n }\n const z = n / inmax * 49 - 13;\n const result = Math.round(outmax*(1 / (1 + Math.exp(-z))));\n return result === 0 ? 1 : result;\n };\n this._maxDispAmount = modsig(this._cluster._markers.length,this._cluster._markerCluster._maxClusterSize,this._config.swarmMarkersMaxLimit);\n }\n swarmAlg2Decider(amount,num){\n if(this._config.swarmMarkersAmountAdjust){\n return this._maxDispAmount > amount;\n }\n return amount <= 5 || num % 10 === 0;\n }\n /**\n * remove cluster icon from the map\n * @memberof ClusterIcon\n * @returns {undefined}\n */\n remove(){\n this._map.Overlays.remove(this._clusterMarker);\n if(this._poly){\n this._map.Overlays.remove(this._poly);\n this._poly = null;\n }\n }\n /**\n * set position where cluster icon will be rendered\n * @param {longdo.Location} center position for cluster icon to be rendered\n * @memberof ClusterIcon\n * @returns {undefined}\n */\n setCenter(center){\n this._center = center;\n }\n /**\n * set number displaying in cluster\n * @param {number} sums numbers to change to\n * @returns {undefined}\n * @memberof ClusterIcon\n */\n setSums(sums){\n if(this._sums && sums === this._sums){return;}\n this._sums = sums;\n if(this._clusterMarker && this._clusterMarker.element()){\n this._iloader.changeNumber(this._clusterMarker.element(),this._sums);\n }\n }\n}\n\n/**\n * class for loading cluser icons & carrying them\n * @export IconLoader\n * @class IconLoader\n */\nexport class IconLoader{\n\n /**\n *Creates an instance of IconLoader.\n * @param {MarkerCluster} markercluster MarkerCluster instance\n * @param {ConfigHandler} config config variables\n * @memberof IconLoader\n */\n constructor(markercluster,config){\n this._markerCluster = markercluster;\n this._config = config;\n this._images = new Map();\n this.ready = true;\n this.useDefault = true;\n if(this._config.styles){\n this.loadStyles(this._config.styles);\n }\n }\n /**\n * load style of icons\n * @param {string} url url of icon image\n * @param {number} width width of the image\n * @param {number} height height of the image\n * @param {number} minThreshold minimum threshold of size of cluster\n * @param {Function} [callback] callback function to be called on finishing loading\n * @returns {number} index of loaded style\n * @memberof IconLoader\n */\n load(url,width,height,minThreshold,callback){\n this.ready = false;\n this.useDefault = false;\n const img = new Image(width,height);\n this._images.set(img,{\"ready\":false,\"minThreshold\":minThreshold});\n const that = this;\n img.onload = function(){\n that._images.get(img).ready = true;\n if([...that._images.values()].every(elm => elm.ready)){\n that.ready = true;\n that._markerCluster.resetViewport();\n that._markerCluster._createClusters();\n }\n if(callback){\n callback();\n }\n };\n img.src = url;\n return this._images.keys.length - 1;\n }\n /**\n * load styles config value\n * @param {Array} styles styles to be loaded\n * @memberof IconLoader\n * @returns {undefined}\n */\n loadStyles(styles){\n styles.sort((elm1,elm2) => \n elm1.minThreshold < elm2.minThreshold ? 1 : elm1.minThreshold === elm2.minThreshold ?\n 0 : -1); \n let len = styles.length;\n const that = this;\n while(len--){\n const style = styles[len];\n this.load(style.url,style.width,style.height,style.minThreshold,len === 0 ? ()=>(that.ready = true) : null);\n }\n }\n /**\n * returns icon config object according to longdo Marker icon syntax\n * @param {number} index index number to get icon style\n * @returns {Object} icon config values object \n * @memberof IconLoader\n */\n getIcon(index){\n const result = {\"offset\": { \"x\": 0, \"y\": 0}};\n if(this.useDefault || typeof index === 'undefined'){\n const elm = document.createElement(\"div\");\n const elm2 = document.createElement('div');\n const elm3 = document.createElement('span');\n elm.appendChild(elm2);\n elm2.appendChild(elm3);\n elm.style.width = '44px';\n elm.style.height = '44px';\n elm.style.marginLeft = '-22px';\n elm.style.marginTop = '-22px';\n elm.style.overflow = 'hidden';\n elm.style.color = `${this._config.textColor}`\n elm.className = 'marker-cluster marker-cluster-small leaflet-marker-icon';\n result.html = elm.outerHTML;\n result.size = {\"width\":44,\"height\":44};\n }else{\n const img = [...this._images.keys()][index];\n const elm = document.createElement(\"div\");\n elm.style.width = `${img.width}px`;\n elm.style.height = `${img.height}px`;\n elm.style.marginLeft = `-${img.width/2}px`;\n elm.style.marginTop = `-${img.height/2}px`;\n elm.style.background = `url('${encodeURI(img.src)}') no-repeat center top`;\n elm.style.lineHeight = elm.style.height;\n elm.style.color = `${this._config.textColor}`;\n elm.style.fontWeight = 'bold';\n elm.style.textAlign = 'center';\n result.html = elm.outerHTML;\n result.size = {\"width\":img.width,\"height\":img.height};\n }\n return result;\n }\n /**\n * change displaying number in cluster\n * @param {HTMLElement} element element of cluster needing to be made changes\n * @param {number} num number to change to \n * @memberof IconLoader\n * @returns {undefined}\n */\n changeNumber(element,num){\n if(this.useDefault){\n element.children[0].children[0].children[0].innerText = `${num.toLocaleString()}`;\n if(num < 10){\n element.children[0].className = 'marker-cluster marker-cluster-small';\n }else if(num < 100){\n element.children[0].className = 'marker-cluster marker-cluster-medium';\n }else{\n element.children[0].className = 'marker-cluster marker-cluster-large';\n }\n }else{\n element.children[0].innerText = `${num.toLocaleString()}`;\n const list = [...this._images.keys()];\n let len = list.length;\n while(len--){\n const img = list[len];\n if(num >= this._images.get(img).minThreshold){\n let elm = element;\n elm.style.width = `${img.width}px`;\n elm.style.height = `${img.height}px`;\n elm = elm.children[0];\n elm.style.background = `url('${encodeURI(img.src)}') no-repeat center top`;\n elm.style.width = `${img.width}px`;\n elm.style.height = `${img.height}px`;\n elm.style.lineHeight = elm.style.height;\n break;\n }\n }\n }\n }\n}\n","const longdo = window.longdo;\n/**\n * class for carrying bound information\n * @export LLBBox\n * @class LLBBox\n */\nexport class LLBBox{\n /**\n *Creates an instance of LLBBox.\n * @param {Array} locations array of locations to create bound\n * @memberof LLBBox\n */\n constructor(locations){\n this._projection = longdo.Projections.EPSG3857;\n this._locationList = locations.slice();\n this._originalLocationList = this._locationList.slice();\n if(locations.length > 0){\n this._bounds = longdo.Util.locationBound(this._locationList);\n }\n }\n\n /**\n * generate the instance set up bound\n * @static\n * @param {longdo.Bound} bound bound to be set up\n * @returns {LLBBox} instance of this class\n * @memberof LLBBox\n */\n static generateFrom(bound){\n return new LLBBox(\n [\n {\"lon\":bound.minLon,\"lat\":bound.minLat},\n {'lon':bound.maxLon,'lat':bound.maxLat}]);\n }\n /**\n * generate the instance set up rect bound from 1 or 2 vertex\n * @static\n * @param {longdo.Location} loc1 1st vertex\n * @param {longdo.Location} [loc2] 2nd vertex, if not provided, it will be as the same as loc1\n * @returns {LLBBox} instance of this class\n * @memberof LLBBox\n */\n static generateRect(loc1,loc2){\n if(!loc2){\n loc2 = loc1;\n }\n return new LLBBox([loc1,loc2]);\n }\n\n /**\n * returns bound\n * @returns {longdo.Bound} bound\n * @memberof LLBBox\n */\n getBounds(){\n return {'minLon':this._bounds.minLon,\n 'minLat':this._bounds.minLat,\n 'maxLon':this._bounds.maxLon,\n 'maxLat':this._bounds.maxLat};\n }\n /**\n * returns Left-Top of the bound\n * @returns {longdo.Location} left-top vertex of the bound\n * @memberof LLBBox\n */\n LT(){\n return {\"lon\": this._bounds.minLon, \"lat\": this._bounds.maxLat};\n }\n /**\n * returns Right-Top of the bound\n * @returns {londgo.Location} right-top vertex of the bound\n * @memberof LLBBox\n */\n RT(){\n return {\"lon\": this._bounds.maxLon, \"lat\": this._bounds.maxLat}; \n }\n /**\n * returns Left-Bottom of the bound\n * @returns {longdo.Location} left-bottom vertex of the bound\n * @memberof LLBBox\n */\n LB(){\n return {\"lon\": this._bounds.minLon, \"lat\": this._bounds.minLat};\n }\n /**\n * returns right-bottom of the bound\n * @returns {longdo.Locaton} right-bottom vertex of the bound\n * @memberof LLBBox\n */\n RB(){\n return {\"lon\": this._bounds.maxLon, \"lat\": this._bounds.minLat};\n }\n getMinimumBounds(){\n const b = longdo.Util.locationBound(this._originalLocationList);\n return b;\n }\n\n /**\n * add location to bound and extend bound in order to include added location\n * @param {longdo.Location} location location to be added\n * @memberof LLBBox\n * @returns {undefined}\n */\n add(location){\n this._locationList.push(location);\n this._originalLocationList.push(location);\n this._bounds = longdo.Util.locationBound(this._locationList);\n }\n /**\n * remove location from the bound\n * @param {longdo.Location} location location to be removed\n * @memberof LLBBox\n * @returns {undefined}\n */\n remove(location){\n this._locationList = this._locationList.filter((e) => e !== location);\n this._originalLocationList = this._originalLocationList.filter((e) => e !== location);\n this._bounds = this.empty() ? null: longdo.Util.locationBound(this._locationList);\n }\n\n /**\n * return whether including no locations or not\n * @returns {boolean} return true if containing no location\n * @memberof LLBBox\n */\n empty(){return this._locationList.length === 0;}\n\n /**\n * returns array of locations included itself\n * @returns {Array} array of locations included in itself\n * @memberof LLBBox\n */\n getLocations(){\n return this._locationList.slice();\n }\n /**\n * returns whether given location is within its bound\n * @param {longdo.Location} loc location to be checked\n * @returns {boolaen} returns true if location is in bound\n * @memberof LLBBox\n */\n isLocInBounds(loc){\n const result = longdo.Util.contains(loc,this.getRectVertex());\n return result === null ? true : result;\n }\n /**\n * extend bound size\n * @param {number} diff size to extends\n * @returns {LLBBox} itself\n * @memberof LLBBox\n */\n extendSize(diff){\n const b = this._bounds;\n const maxy = this._projection.latToNorm(b.maxLat) + diff;\n const miny = this._projection.latToNorm(b.minLat) - diff;\n this._locationList.push({\"lon\":b.minLon - diff,\"lat\": this._projection.normToLat(miny)});\n this._locationList.push({\"lon\":b.minLon - diff,\"lat\": this._projection.normToLat(maxy)});\n this._locationList.push({\"lon\":b.minLon + diff,\"lat\": this._projection.normToLat(miny)});\n this._locationList.push({\"lon\":b.maxLon + diff,\"lat\": this._projection.normToLat(maxy)});\n this._bounds = longdo.Util.locationBound(this._locationList);\n return this;\n }\n /**\n * returns array of vertex by order of drawing rect\n * @returns {Array} array of vertex locations\n * @memberof LLBBox\n */\n getRectVertex(){\n return [{\"lon\":this._bounds.minLon,\"lat\":this._bounds.minLat},\n {\"lon\":this._bounds.minLon,\"lat\":this._bounds.maxLat},\n {\"lon\":this._bounds.maxLon,\"lat\":this._bounds.maxLat},\n {\"lon\":this._bounds.maxLon,\"lat\":this._bounds.minLat}];\n }\n\n /**\n * draw polygon to show bound\n * @param {longdo.Map} map map for polygon to show\n * @memberof LLBBox\n * @returns {undefined}\n */\n drawArea(map){\n this._poly = new longdo.Polygon(this.getRectVertex());\n map.Overlays.add(this._poly);\n }\n /**\n * remove polygon from map\n * @param {longdo.Map} map map where the polygon will be removed\n * @memberof LLBBox\n * @returns {undefined}\n */\n removeArea(map){\n if(this._poly && this._poly.active()){\n map.Overlays.remove(this._poly);\n delete this._poly;\n }\n }\n\n /**\n * returns relative coordinates in given N x N grid\n * @param {longdo.Location} loc location to be checked\n * @param {number} n size of width,height of the grid\n * @returns {longdo.Tile} coordinates(Tile)\n * @memberof LLBBox\n */\n getNxNGridCord(loc,n){\n if(!this.isLocInBounds(loc)){\n return null;\n }\n const xlen = (this._bounds.maxLon - this._bounds.minLon) / n;\n const ylen = (this._lat2y(this._bounds.maxLat) - this._lat2y(this._bounds.minLat)) / n;\n let lonoffset = loc.lon - this._bounds.minLon;\n const yoffset = -this._lat2y(loc.lat) + this._lat2y(this._bounds.maxLat);\n const xid = Math.floor(lonoffset / xlen), yid = Math.floor(yoffset / ylen);\n return {\"u\": xid,\"v\": yid};\n }\n\n /*\n Adapted from https://wiki.openstreetmap.org/wiki/Mercator\n */\n /**\n * convert y pixel coordinate into latitude\n * @param {number} y pixel coordinate\n * @returns {number} latitude\n * @memberof LLBBox\n */\n _y2lat(y) { return (Math.atan(Math.exp(y / (180 / Math.PI))) / (Math.PI / 4) - 1) * 90; }\n /**\n * convert latitude into y pixel coordinate\n * @param {number} lat latitude\n * @returns {number} y pixel coordinate\n * @memberof LLBBox\n */\n _lat2y(lat) { return Math.log(Math.tan((lat / 90 + 1) * (Math.PI / 4) )) * (180 / Math.PI); }\n}\n\nexport class LLCircle{\n constructor(center,radius){\n this.center = center;\n this.sqrad = radius * radius;\n }\n}","/** @module MarkerCluster*/\nif(typeof window.longdo === 'undefined'){\n throw new Error('longdo API must be loaded before the longdomap markercluster plugin');\n}\nconst longdo = window.longdo;\nimport {LLBBox} from \"./LLBBox\";\nimport Config from \"./ConfigHandler\";\nimport {IconLoader} from './Icon';\nimport Cluster from './Cluster';\n/**\n * Class for MarkerCluster\n *\n * @export MarkerCluser\n * @class MarkerCluster\n */\nexport default class MarkerCluster{\n\n /**\n *Creates an instance of MarkerCluster.\n * @param {longdo.Map} map Longdo Map instance\n * @param {Object} options Options for MarkerCluster\n * @memberof MarkerCluster\n */\n constructor(map, options){\n this._map = map;\n this._markers = [];\n this._clusters = [];\n this._prevZoom = 2;\n this._ready = false;\n this.overlay = [];\n this.config = new Config(options);\n this._iloader = new IconLoader(this,this.config);\n \n const that = this;\n this._map.Event.bind('ready',function() {\n if(!that._ready || !that._iloader.ready){return;}\n that._prevZoom = that._map.zoom;\n that.resetViewport();\n that._createClusters();\n });\n this._map.Event.bind('zoom', function (/*pivot*/){\n if(!that._ready || !that._iloader.ready){return;}\n that.resetViewport();\n // that._createClusters();\n });\n // this._map.Event.bind('drop',function() {\n // if(!that._ready || !that._iloader.ready){return;}\n // that.resetViewport();\n // that._createClusters();\n // });\n this._map.Event.bind('overlayClick', function(overlay){\n that.setSelectedMarker(overlay)\n if(!that._ready || !that._iloader.ready){return;}\n let len = that._clusters.length;\n while(len--){\n const cl = that._clusters[len];\n if(overlay === cl._clusterIcon._clusterMarker){\n const l = [];\n let len2 = cl._markers.length;\n while(len2--){\n l.push(cl._markers[len2].location());\n }\n that._map.bound(longdo.Util.locationBound(l));\n // setTimeout(function(){\n // that.resetViewport();\n // that._createClusters();\n // },10);\n return;\n }\n }\n });\n this._map.Event.bind('loadTile', function(s){\n if(s === 'start' || !that._ready || !that._iloader.ready){return;}\n that.resetViewport();\n that._createClusters();\n });\n }\n\n /**\n * add marker(s) to plugins's management\n * @param {longdo.Marker| Array} markers marker(s) to add\n * @memberof MarkerCluster\n * @returns {undefined}\n */\n addMarkers(markers){\n if(markers instanceof longdo.Marker){\n markers = [markers];\n }\n let len = markers.length;\n while(len--){\n const m = markers[len];\n this._markers.push(m);\n }\n if(this.config.swarmModeEnabled){\n this.shuffle();\n }\n }\n /**\n * randomize elements order in {@link MarkerCluster._markers}\n * using Fisher-Yates Algorithm\n * @memberof MarkerCluster\n * @returns {undefined}\n */\n shuffle(){\n for(let i = this._markers.length-1;i > 0; i--){\n const r = Math.floor(Math.random()*(i+1));\n const temp = this._markers[i];\n this._markers[i] = this._markers[r];\n this._markers[r] = temp;\n }\n }\n getSelectedMarker() {\n if(this.overlay) {\n return this.overlay;\n }\n return null\n }\n setSelectedMarker(_overlay) {\n if(_overlay && _overlay.element() && _overlay.element().classList.contains('ldmap_clickable')) {\n this.overlay = _overlay\n }\n }\n\n /**\n * start rendering if icons-loading finished\n * @memberof MarkerCluster\n * @returns {undefined}\n */\n render(){\n this._ready = true;\n if(this._iloader.ready){\n this.resetViewport();\n this._createClusters();\n }\n }\n /**\n * choose markers in Map bound & add to clusters\n * @memberof MarkerCluster\n * @returns {undefined}\n */\n _createClusters(){\n const mapBounds = LLBBox.generateFrom(this._map.bound());\n const bounds = mapBounds.extendSize(this.config.gridSize*Math.pow(2,-this._map.zoom()));\n let len = this._markers.length;\n while(len--){\n const m = this._markers[len];\n const loc = m.location();\n if(!m.isAdded && bounds.isLocInBounds(loc)){\n if(!this.config.swarmModeEnabled){\n this._addToClosestCluster(m);\n }else{\n if(this.config.swarmAlg === 2){\n this._addToClosestCluster(m);\n }else{\n this._addToTiledCluster(m);\n }\n }\n \n }\n }\n len = this._clusters.length;\n while(len--){\n const cl = this._clusters[len];\n cl.finalize();\n }\n }\n /**\n * add marker to the closest cluster if it is within cluster's grid. If not, create new one.\n * @param {longdo.Marker} marker marker to be added\n * @memberof MarkerCluster\n * @returns {undefined}\n */\n _addToClosestCluster(marker){\n let distance = Number.POSITIVE_INFINITY;\n let clusterToAddTo = null;\n let len = this._clusters.length;\n while(len--){\n const cluster = this._clusters[len];\n const cen = cluster._center;\n if(cen){\n const d = longdo.Util.distance([cen,marker.location()]);\n if(d < distance){\n distance = d;\n clusterToAddTo = cluster;\n }\n }\n }\n if(clusterToAddTo && clusterToAddTo.isMarkerInClusterBounds(marker)){\n clusterToAddTo.addMarker(marker);\n if(this._maxClusterSize && this._maxClusterSize < clusterToAddTo._markers.length){\n this._maxClusterSize = clusterToAddTo._markers.length;\n }else{\n this._maxClusterSize = clusterToAddTo._markers.length;\n }\n }else{\n const cluster = new Cluster(this,this.config,this._iloader);\n cluster.addMarker(marker);\n this._clusters.push(cluster);\n if(this._maxClusterSize && this._maxClusterSize < cluster._markers.length){\n this._maxClusterSize = cluster._markers.length;\n }else{\n this._maxClusterSize = cluster._markers.length;\n }\n }\n }\n\n /**\n * add marker to clusters in charge of its tile\n * @param {longdo.Marker} marker marker to be added\n * @returns {undefined}\n * @memberof MarkerCluster\n */\n _addToTiledCluster(marker){\n const that = this;\n const locationToTile = function(loc){\n const point = longdo.Util.locationToPoint(longdo.Projections.EPSG3857,loc);\n point.z = 20-that._map.zoom();\n return longdo.Util.pointToTile(point);\n };\n const tile = locationToTile(marker.location());\n let len = this._clusters.length;\n while(len--){\n const cluster = this._clusters[len];\n if(cluster.u === tile.u && cluster.v === tile.v){\n cluster.addMarker(marker,tile);\n return;\n }\n }\n const cluster = new Cluster(this,this.config,this._iloader);\n cluster.u = tile.u;\n cluster.v = tile.v;\n cluster.addMarker(marker,tile);\n this._clusters.push(cluster);\n }\n\n _removeMarker(marker){\n const index = this._markers.indexOf(marker);\n if(index === -1){\n return false;\n }\n this._map.Overlays.remove(marker);\n this._markers.splice(index,1);\n return true;\n }\n\n removeMarker(marker){\n const removed = this._removeMarker(marker);\n if(removed){\n this.resetViewport();\n this._createClusters();\n return true;\n }\n return false;\n }\n\n removeMarkers(markers){\n const markersCopy = markers === this._markers ? this._markers.slice() : markers;\n let removed = false;\n let len = markersCopy.length;\n while(len--){\n const r = this._removeMarker(markersCopy[len]);\n removed = removed || r;\n }\n if(removed){\n this.resetViewport();\n this._createClusters();\n return true;\n }\n return false;\n }\n\n clearMarkers(){\n this.resetViewport();\n let len = this._markers.length;\n while(len--){\n const marker = this._markers[len];\n this._map.Overlays.remove(marker);\n }\n this._markers = [];\n }\n\n /**\n * remove clusters & markers from the map, then clear clusters\n * @memberof MarkerCluster\n * @returns {undefined}\n */\n resetViewport(){\n let len = this._clusters.length;\n while(len--){\n this._clusters[len].remove();\n }\n len = this._markers.length;\n while(len--){\n const marker = this._markers[len];\n marker.isAdded = false;\n this._map.Overlays.remove(marker);\n }\n this._clusters = [];\n }\n}\n","export {default as MarkerCluster} from './MarkerCluster';\n"],"sourceRoot":""} \ No newline at end of file diff --git a/src/ConfigHandler.js b/src/ConfigHandler.js index 55015b6..27ee01d 100644 --- a/src/ConfigHandler.js +++ b/src/ConfigHandler.js @@ -7,6 +7,7 @@ export default class { constructor(options){ this.maxZoom = options.maxZoom || null; this.minClusterSize = options.minClusterSize || 2; + this.textColor = options.textColor || 'black'; this.gridSize = options.gridSize || 120; this.clusterRadius = options.clusterRadius || this.gridSize; this.averageCenter = options.averageCenter; diff --git a/src/Icon.js b/src/Icon.js index e1c5eca..5eb8231 100644 --- a/src/Icon.js +++ b/src/Icon.js @@ -245,6 +245,7 @@ export class IconLoader{ elm.style.marginLeft = '-22px'; elm.style.marginTop = '-22px'; elm.style.overflow = 'hidden'; + elm.style.color = `${this._config.textColor}` elm.className = 'marker-cluster marker-cluster-small leaflet-marker-icon'; result.html = elm.outerHTML; result.size = {"width":44,"height":44}; @@ -257,7 +258,7 @@ export class IconLoader{ elm.style.marginTop = `-${img.height/2}px`; elm.style.background = `url('${encodeURI(img.src)}') no-repeat center top`; elm.style.lineHeight = elm.style.height; - elm.style.color = 'black'; + elm.style.color = `${this._config.textColor}`; elm.style.fontWeight = 'bold'; elm.style.textAlign = 'center'; result.html = elm.outerHTML;