| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335 | 
							- var BMap = window.BMap
 
- var BMapLib = (window.BMapLib = BMapLib || {})
 
- ;(function () {
 
-   var b = function (m, l, j) {
 
-     l = d(l)
 
-     var n = m.pointToPixel(l.getNorthEast())
 
-     var i = m.pointToPixel(l.getSouthWest())
 
-     n.x += j
 
-     n.y -= j
 
-     i.x -= j
 
-     i.y += j
 
-     var h = m.pixelToPoint(n)
 
-     var k = m.pixelToPoint(i)
 
-     return new BMap.Bounds(k, h)
 
-   }
 
-   var d = function (i) {
 
-     var k = f(i.getNorthEast().lng, -180, 180)
 
-     var h = f(i.getSouthWest().lng, -180, 180)
 
-     var j = f(i.getNorthEast().lat, -74, 74)
 
-     var l = f(i.getSouthWest().lat, -74, 74)
 
-     return new BMap.Bounds(new BMap.Point(h, l), new BMap.Point(k, j))
 
-   }
 
-   var f = function (j, k, h) {
 
-     k && (j = Math.max(j, k))
 
-     h && (j = Math.min(j, h))
 
-     return j
 
-   }
 
-   var a = function (h) {
 
-     return '[object Array]' === Object.prototype.toString.call(h)
 
-   }
 
-   var c = function (l, n) {
 
-     var j = -1
 
-     if (a(n)) {
 
-       if (n.indexOf) {
 
-         j = n.indexOf(l)
 
-       } else {
 
-         for (var k = 0, h; (h = n[k]); k++) {
 
-           if (h === l) {
 
-             j = k
 
-             break
 
-           }
 
-         }
 
-       }
 
-     }
 
-     return j
 
-   }
 
-   var e = (BMapLib.MarkerClusterer = function (l, h) {
 
-     if (!l) {
 
-       return
 
-     }
 
-     this._map = l
 
-     this._markers = []
 
-     this._clusters = []
 
-     var k = h || {}
 
-     this._gridSize = k.gridSize || 60
 
-     this._maxZoom = k.maxZoom || 18
 
-     this._minClusterSize = k.minClusterSize || 2
 
-     this._isAverageCenter = false
 
-     if (k.isAverageCenter != undefined) {
 
-       this._isAverageCenter = k.isAverageCenter
 
-     }
 
-     this._styles = k.styles || []
 
-     var j = this
 
-     this._map.addEventListener('zoomend', function () {
 
-       j._redraw()
 
-     })
 
-     this._map.addEventListener('moveend', function () {
 
-       j._redraw()
 
-     })
 
-     var i = k.markers
 
-     a(i) && this.addMarkers(i)
 
-   })
 
-   e.prototype.addMarkers = function (k) {
 
-     for (var j = 0, h = k.length; j < h; j++) {
 
-       this._pushMarkerTo(k[j])
 
-     }
 
-     this._createClusters()
 
-   }
 
-   e.prototype._pushMarkerTo = function (h) {
 
-     var i = c(h, this._markers)
 
-     if (i === -1) {
 
-       h.isInCluster = false
 
-       this._markers.push(h)
 
-     }
 
-   }
 
-   e.prototype.addMarker = function (h) {
 
-     this._pushMarkerTo(h)
 
-     this._createClusters()
 
-   }
 
-   e.prototype._createClusters = function () {
 
-     var j = this._map.getBounds()
 
-     var l = b(this._map, j, this._gridSize)
 
-     for (var k = 0, h; (h = this._markers[k]); k++) {
 
-       if (!h.isInCluster && l.containsPoint(h.getPosition())) {
 
-         this._addToClosestCluster(h)
 
-       }
 
-     }
 
-   }
 
-   e.prototype._addToClosestCluster = function (l) {
 
-     var p = 4000000
 
-     var n = null
 
-     // var k = l.getPosition()
 
-     for (var m = 0, j; (j = this._clusters[m]); m++) {
 
-       var h = j.getCenter()
 
-       if (h) {
 
-         var o = this._map.getDistance(h, l.getPosition())
 
-         if (o < p) {
 
-           p = o
 
-           n = j
 
-         }
 
-       }
 
-     }
 
-     if (n && n.isMarkerInClusterBounds(l)) {
 
-       n.addMarker(l)
 
-     } else {
 
-       // eslint-disable-next-line
 
-       var j = new g(this)
 
-       j.addMarker(l)
 
-       this._clusters.push(j)
 
-     }
 
-   }
 
-   e.prototype._clearLastClusters = function () {
 
-     for (var j = 0, h; (h = this._clusters[j]); j++) {
 
-       h.remove()
 
-     }
 
-     this._clusters = []
 
-     this._removeMarkersFromCluster()
 
-   }
 
-   e.prototype._removeMarkersFromCluster = function () {
 
-     for (var j = 0, h; (h = this._markers[j]); j++) {
 
-       h.isInCluster = false
 
-     }
 
-   }
 
-   e.prototype._removeMarkersFromMap = function () {
 
-     for (var j = 0, h; (h = this._markers[j]); j++) {
 
-       h.isInCluster = false
 
-       this._map.removeOverlay(h)
 
-     }
 
-   }
 
-   e.prototype._removeMarker = function (h) {
 
-     var i = c(h, this._markers)
 
-     if (i === -1) {
 
-       return false
 
-     }
 
-     this._map.removeOverlay(h)
 
-     this._markers.splice(i, 1)
 
-     return true
 
-   }
 
-   e.prototype.removeMarker = function (h) {
 
-     var i = this._removeMarker(h)
 
-     if (i) {
 
-       this._clearLastClusters()
 
-       this._createClusters()
 
-     }
 
-     return i
 
-   }
 
-   e.prototype.removeMarkers = function (l) {
 
-     var k = false
 
-     for (var h = 0; h < l.length; h++) {
 
-       var j = this._removeMarker(l[h])
 
-       k = k || j
 
-     }
 
-     if (k) {
 
-       this._clearLastClusters()
 
-       this._createClusters()
 
-     }
 
-     return k
 
-   }
 
-   e.prototype.clearMarkers = function () {
 
-     this._clearLastClusters()
 
-     this._removeMarkersFromMap()
 
-     this._markers = []
 
-   }
 
-   e.prototype._redraw = function () {
 
-     this._clearLastClusters()
 
-     this._createClusters()
 
-   }
 
-   e.prototype.getGridSize = function () {
 
-     return this._gridSize
 
-   }
 
-   e.prototype.setGridSize = function (h) {
 
-     this._gridSize = h
 
-     this._redraw()
 
-   }
 
-   e.prototype.getMaxZoom = function () {
 
-     return this._maxZoom
 
-   }
 
-   e.prototype.setMaxZoom = function (h) {
 
-     this._maxZoom = h
 
-     this._redraw()
 
-   }
 
-   e.prototype.getStyles = function () {
 
-     return this._styles
 
-   }
 
-   e.prototype.setStyles = function (h) {
 
-     this._styles = h
 
-     this._redraw()
 
-   }
 
-   e.prototype.getMinClusterSize = function () {
 
-     return this._minClusterSize
 
-   }
 
-   e.prototype.setMinClusterSize = function (h) {
 
-     this._minClusterSize = h
 
-     this._redraw()
 
-   }
 
-   e.prototype.isAverageCenter = function () {
 
-     return this._isAverageCenter
 
-   }
 
-   e.prototype.getMap = function () {
 
-     return this._map
 
-   }
 
-   e.prototype.getMarkers = function () {
 
-     return this._markers
 
-   }
 
-   e.prototype.getClustersCount = function () {
 
-     var k = 0
 
-     for (var j = 0, h; (h = this._clusters[j]); j++) {
 
-       h.isReal() && k++
 
-     }
 
-     return k
 
-   }
 
-   function g(h) {
 
-     this._markerClusterer = h
 
-     this._map = h.getMap()
 
-     this._minClusterSize = h.getMinClusterSize()
 
-     this._isAverageCenter = h.isAverageCenter()
 
-     this._center = null
 
-     this._markers = []
 
-     this._gridBounds = null
 
-     this._isReal = false
 
-     this._clusterMarker = new BMapLib.TextIconOverlay(
 
-       this._center,
 
-       this._markers.length,
 
-       {
 
-         styles: this._markerClusterer.getStyles(),
 
-       }
 
-     )
 
-   }
 
-   g.prototype.addMarker = function (k) {
 
-     if (this.isMarkerInCluster(k)) {
 
-       return false
 
-     }
 
-     if (!this._center) {
 
-       this._center = k.getPosition()
 
-       this.updateGridBounds()
 
-     } else {
 
-       if (this._isAverageCenter) {
 
-         var j = this._markers.length + 1
 
-         var o = (this._center.lat * (j - 1) + k.getPosition().lat) / j
 
-         var m = (this._center.lng * (j - 1) + k.getPosition().lng) / j
 
-         this._center = new BMap.Point(m, o)
 
-         this.updateGridBounds()
 
-       }
 
-     }
 
-     k.isInCluster = true
 
-     this._markers.push(k)
 
-     var h = this._markers.length
 
-     if (h < this._minClusterSize) {
 
-       this._map.addOverlay(k)
 
-       return true
 
-     } else {
 
-       if (h === this._minClusterSize) {
 
-         for (var n = 0; n < h; n++) {
 
-           this._markers[n].getMap() && this._map.removeOverlay(this._markers[n])
 
-         }
 
-       }
 
-     }
 
-     this._map.addOverlay(this._clusterMarker)
 
-     this._isReal = true
 
-     this.updateClusterMarker()
 
-     return true
 
-   }
 
-   g.prototype.isMarkerInCluster = function (j) {
 
-     if (this._markers.indexOf) {
 
-       return this._markers.indexOf(j) != -1
 
-     } else {
 
-       for (var k = 0, h; (h = this._markers[k]); k++) {
 
-         if (h === j) {
 
-           return true
 
-         }
 
-       }
 
-     }
 
-     return false
 
-   }
 
-   g.prototype.isMarkerInClusterBounds = function (h) {
 
-     return this._gridBounds.containsPoint(h.getPosition())
 
-   }
 
-   g.prototype.isReal = function () {
 
-     return this._isReal
 
-   }
 
-   g.prototype.updateGridBounds = function () {
 
-     var h = new BMap.Bounds(this._center, this._center)
 
-     this._gridBounds = b(this._map, h, this._markerClusterer.getGridSize())
 
-   }
 
-   g.prototype.updateClusterMarker = function () {
 
-     if (this._map.getZoom() > this._markerClusterer.getMaxZoom()) {
 
-       this._clusterMarker && this._map.removeOverlay(this._clusterMarker)
 
-       for (var l = 0, j; (j = this._markers[l]); l++) {
 
-         this._map.addOverlay(j)
 
-       }
 
-       return
 
-     }
 
-     if (this._markers.length < this._minClusterSize) {
 
-       this._clusterMarker.hide()
 
-       return
 
-     }
 
-     this._clusterMarker.setPosition(this._center)
 
-     this._clusterMarker.setText(this._markers.length)
 
-     var k = this._map
 
-     var h = this.getBounds()
 
-     this._clusterMarker.addEventListener('click', function () {
 
-       k.setViewport(h)
 
-     })
 
-   }
 
-   g.prototype.remove = function () {
 
-     // eslint-disable-next-line
 
-     for (var j = 0, h; (h = this._markers[j]); j++) {
 
-       this._markers[j].getMap() && this._map.removeOverlay(this._markers[j])
 
-     }
 
-     this._map.removeOverlay(this._clusterMarker)
 
-     this._markers.length = 0
 
-     delete this._markers
 
-   }
 
-   g.prototype.getBounds = function () {
 
-     var k = new BMap.Bounds(this._center, this._center)
 
-     for (var j = 0, h; (h = this._markers[j]); j++) {
 
-       k.extend(h.getPosition())
 
-     }
 
-     return k
 
-   }
 
-   g.prototype.getCenter = function () {
 
-     return this._center
 
-   }
 
- })()
 
 
  |