nakarte

Source code of https://map.sikmir.ru (fork)
git clone git://git.sikmir.ru/nakarte
Log | Files | Refs | LICENSE

commit a4662605c372d7a5d41a9135adb6d1f866bc5d67
parent 7d8bd6cb8e472c2a05c8490709041631c11e33be
Author: Sergej Orlov <wladimirych@gmail.com>
Date:   Fri, 16 Dec 2016 18:39:45 +0300

[canvas markers] removed race condition while loading markers

Diffstat:
Msrc/lib/leaflet.layer.canvasMarkers/index.js | 19+++++++++++--------
1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/src/lib/leaflet.layer.canvasMarkers/index.js b/src/lib/leaflet.layer.canvasMarkers/index.js @@ -180,7 +180,8 @@ L.Layer.CanvasMarkers = L.GridLayer.extend({ const iconUrls = [], markerJobs = {}; - var markers = this.rtree.search( + + const pointsForMarkers = this.rtree.search( { minX: iconsBounds.getWest(), minY: iconsBounds.getSouth(), @@ -189,7 +190,14 @@ L.Layer.CanvasMarkers = L.GridLayer.extend({ } ); - for (let marker of markers) { + const pointsForLabels = this.rtree.search({ + minX: labelsBounds.getWest(), minY: labelsBounds.getSouth(), + maxX: labelsBounds.getEast(), maxY: labelsBounds.getNorth() + } + ); + + + for (let marker of pointsForMarkers) { const p = this._map.project(marker.latlng, zoom); let icon = marker.icon; if (typeof icon === 'function') { @@ -233,12 +241,7 @@ L.Layer.CanvasMarkers = L.GridLayer.extend({ job.iconCenter = [x + imgW / 2, y + imgH / 2]; job.iconSize = [imgW, imgH]; } - markers = this.rtree.search({ - minX: labelsBounds.getWest(), minY: labelsBounds.getSouth(), - maxX: labelsBounds.getEast(), maxY: labelsBounds.getNorth() - } - ); - for (let marker of markers) { + for (let marker of pointsForLabels) { const markerId = L.stamp(marker); const job = markerJobs[markerId]; let label = job.marker.label;