-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathgridCenterRectangle.js
146 lines (116 loc) · 4.26 KB
/
gridCenterRectangle.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
module.exports = function changeRectangleColor(options){
let map = options.blurredLocation.map ;
let rectangles = [] ;
function getColorCode(ctr){
let color = '#ff0000' ;
if(ctr === 0){
color = '#F3F0C0' ;
}
else if(ctr >=1 && ctr<=10){
color = '#FFA500' ;
}
else if(ctr<=15){
color = '#faff05' ;
}
else if(ctr<=25){
color = '#FF6347' ;
}
else if(ctr<=35){
color = '#FF4500' ;
}
else if(ctr<=45){
color = '#FF0000' ;
}
else{
color = '#8B0000' ;
}
return color ;
}
function ColorRectangles()
{
// console.log(options.return_all_markers_map()) ;
if(typeof options.blurredLocation.getRectangle() !== "undefined"){
options.blurredLocation.getRectangle().remove() ;
}
for(let i=0 ; i<rectangles.length ; i++){
rectangles[i].remove() ;
}
rectangles.length = 0 ;
rectangles = [] ;
if(map.getZoom() >= 3 && map.getZoom() <=9){
drawFullHeatMap() ;
}
}
ColorRectangles() ;
function calculateMarkersInsideRect(bounds)
{
let locations = options.return_all_markers_map() ;
let ctr = 0 ;
locations.forEach(function(value , key , map){
if(typeof(value._latlng) != "undefined"){
let latitude = value._latlng.lat ;
// console.log(latitude) ;
let longitude = value._latlng.lng ;
if(latitude >= bounds[0][0] && latitude <= bounds[1][0] && longitude >= bounds[0][1] && longitude <= bounds[1][1]){
ctr++ ;
}
}
}) ;
return ctr ;
}
// generated left row of rectangles starting from current_lng to left_lng !
function leftRectangles(left_lng , current_lng , upper_lat , lower_lat , diff)
{
while(current_lng+diff >= left_lng){
let lat1 = lower_lat ;
let lng1 = current_lng ;
let lat2 = upper_lat ;
let lng2 = current_lng + diff ;
let bounds = [[lat1,lng1], [lat2,lng2]] ;
let ctr = calculateMarkersInsideRect(bounds) ;
let color = getColorCode(ctr) ;
let r = L.rectangle(bounds, {color: color , weight: 1}).bindPopup('Number of Markers : ' + ctr).addTo(map);
rectangles[rectangles.length] = r ;
current_lng = current_lng - diff ;
}
}
// generated left row of rectangles starting from current_lng to left_lng !
function rightRectangles(right_lng , current_lng , upper_lat , lower_lat , diff)
{
while(current_lng-diff <= right_lng){
let lat1 = lower_lat ;
let lng1 = current_lng ;
let lat2 = upper_lat ;
let lng2 = current_lng + diff ;
let bounds = [[lat1,lng1], [lat2,lng2]] ;
let ctr = calculateMarkersInsideRect(bounds) ;
let color = getColorCode(ctr) ;
let r = L.rectangle(bounds, {color: color , weight: 1}).bindPopup('Number of Markers : ' + ctr).addTo(map);
rectangles[rectangles.length] = r ;
current_lng = current_lng + diff ;
}
}
function drawFullHeatMap()
{
let center_bounds = options.blurredLocation.getRectangle().getBounds() ;
let center_NE = center_bounds.getNorthEast() ;
let center_SW = center_bounds.getSouthWest() ;
let diff = center_NE.lat - center_SW.lat ;
let current_SW_lng = center_SW.lng ;
let current_upper_lat = center_SW.lat ;
while(current_upper_lat <= map.getBounds().getNorthEast().lng){
current_SW_lng = center_SW.lng ;
leftRectangles(map.getBounds().getSouthWest().lng , current_SW_lng , current_upper_lat + diff , current_upper_lat, diff) ;
rightRectangles(map.getBounds().getNorthEast().lng , current_SW_lng+diff , current_upper_lat + diff , current_upper_lat , diff) ;
current_upper_lat = current_upper_lat + diff ;
}
current_upper_lat = center_SW.lat - diff ;
while(current_upper_lat + diff >= map.getBounds().getSouthWest().lat){
current_SW_lng = center_SW.lng ;
leftRectangles(map.getBounds().getSouthWest().lng , current_SW_lng , current_upper_lat + diff , current_upper_lat, diff) ;
rightRectangles(map.getBounds().getNorthEast().lng , current_SW_lng + diff , current_upper_lat + diff , current_upper_lat , diff) ;
current_upper_lat = current_upper_lat - diff ;
}
}
return ColorRectangles ;
}