Skip to content

Commit fe1e89b

Browse files
committed
grid增加不聚合功能
1 parent 7d105df commit fe1e89b

5 files changed

Lines changed: 82 additions & 38 deletions

File tree

build/mapv.js

Lines changed: 40 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
(factory((global.mapv = global.mapv || {})));
55
}(this, (function (exports) { 'use strict';
66

7-
var version = "2.0.43";
7+
var version = "2.0.44";
88

99
/**
1010
* @author kyle / http://nikai.us/
@@ -1174,35 +1174,57 @@ var drawGrid = {
11741174

11751175
var size = options._size || options.size || 50;
11761176

1177+
// 后端传入数据为网格数据时,传入enableCluster为false,前端不进行删格化操作,直接画方格
1178+
var enableCluster = 'enableCluster' in options ? options.enableCluster : true;
1179+
11771180
var offset = options.offset || {
11781181
x: 0,
11791182
y: 0
11801183
};
11811184

1182-
for (var i = 0; i < data.length; i++) {
1183-
var coordinates = data[i].geometry._coordinates || data[i].geometry.coordinates;
1184-
var gridKey = Math.floor((coordinates[0] - offset.x) / size) + "," + Math.floor((coordinates[1] - offset.y) / size);
1185-
if (!grids[gridKey]) {
1186-
grids[gridKey] = 0;
1187-
}
1188-
grids[gridKey] += ~~(data[i].count || 1);
1189-
}
1190-
11911185
var intensity = new Intensity({
11921186
min: options.min || 0,
11931187
max: options.max || 100,
11941188
gradient: options.gradient
11951189
});
11961190

1197-
for (var gridKey in grids) {
1198-
gridKey = gridKey.split(",");
1191+
if (!enableCluster) {
1192+
for (var i = 0; i < data.length; i++) {
1193+
var coordinates = data[i].geometry._coordinates || data[i].geometry.coordinates;
1194+
var gridKey = coordinates.join(',');
1195+
grids[gridKey] = ~~(data[i].count || 1);
1196+
}
1197+
for (var _gridKey in grids) {
1198+
_gridKey = _gridKey.split(",");
11991199

1200-
context.beginPath();
1201-
context.rect(gridKey[0] * size + .5 + offset.x, gridKey[1] * size + .5 + offset.y, size, size);
1202-
context.fillStyle = intensity.getColor(grids[gridKey]);
1203-
context.fill();
1204-
if (options.strokeStyle && options.lineWidth) {
1205-
context.stroke();
1200+
context.beginPath();
1201+
context.rect(+_gridKey[0] - size / 2, +_gridKey[1] - size / 2, size, size);
1202+
context.fillStyle = intensity.getColor(grids[_gridKey]);
1203+
context.fill();
1204+
if (options.strokeStyle && options.lineWidth) {
1205+
context.stroke();
1206+
}
1207+
}
1208+
} else {
1209+
for (var _i = 0; _i < data.length; _i++) {
1210+
var coordinates = data[_i].geometry._coordinates || data[_i].geometry.coordinates;
1211+
var gridKey = Math.floor((coordinates[0] - offset.x) / size) + "," + Math.floor((coordinates[1] - offset.y) / size);
1212+
if (!grids[gridKey]) {
1213+
grids[gridKey] = 0;
1214+
}
1215+
grids[gridKey] += ~~(data[_i].count || 1);
1216+
}
1217+
1218+
for (var _gridKey2 in grids) {
1219+
_gridKey2 = _gridKey2.split(",");
1220+
1221+
context.beginPath();
1222+
context.rect(_gridKey2[0] * size + .5 + offset.x, _gridKey2[1] * size + .5 + offset.y, size, size);
1223+
context.fillStyle = intensity.getColor(grids[_gridKey2]);
1224+
context.fill();
1225+
if (options.strokeStyle && options.lineWidth) {
1226+
context.stroke();
1227+
}
12061228
}
12071229
}
12081230

build/mapv.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build/version.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export var version = "2.0.43";
1+
export var version = "2.0.44";

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "mapv",
3-
"version": "2.0.43",
3+
"version": "2.0.44",
44
"description": "a library of geography visualization",
55
"main": "build/mapv.js",
66
"scripts": {

src/canvas/draw/grid.js

Lines changed: 39 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,35 +16,57 @@ export default {
1616

1717
var size = options._size || options.size || 50;
1818

19+
// 后端传入数据为网格数据时,传入enableCluster为false,前端不进行删格化操作,直接画方格
20+
var enableCluster = 'enableCluster' in options ? options.enableCluster : true;
21+
1922
var offset = options.offset || {
2023
x: 0,
2124
y: 0
2225
}
2326

24-
for (var i = 0; i < data.length; i++) {
25-
var coordinates = data[i].geometry._coordinates || data[i].geometry.coordinates;
26-
var gridKey = Math.floor((coordinates[0] - offset.x) / size) + "," + Math.floor((coordinates[1] - offset.y) / size);
27-
if (!grids[gridKey]) {
28-
grids[gridKey] = 0;
29-
}
30-
grids[gridKey] += ~~(data[i].count || 1);
31-
}
32-
3327
var intensity = new Intensity({
3428
min: options.min || 0,
3529
max: options.max || 100,
3630
gradient: options.gradient
3731
});
3832

39-
for (var gridKey in grids) {
40-
gridKey = gridKey.split(",");
33+
if (!enableCluster) {
34+
for (let i = 0; i < data.length; i++) {
35+
var coordinates = data[i].geometry._coordinates || data[i].geometry.coordinates;
36+
var gridKey = coordinates.join(',');
37+
grids[gridKey] = ~~(data[i].count || 1);
38+
}
39+
for (let gridKey in grids) {
40+
gridKey = gridKey.split(",");
41+
42+
context.beginPath();
43+
context.rect(+gridKey[0] - size / 2, +gridKey[1] - size / 2, size, size);
44+
context.fillStyle = intensity.getColor(grids[gridKey]);
45+
context.fill();
46+
if (options.strokeStyle && options.lineWidth) {
47+
context.stroke();
48+
}
49+
}
50+
} else {
51+
for (let i = 0; i < data.length; i++) {
52+
var coordinates = data[i].geometry._coordinates || data[i].geometry.coordinates;
53+
var gridKey = Math.floor((coordinates[0] - offset.x) / size) + "," + Math.floor((coordinates[1] - offset.y) / size);
54+
if (!grids[gridKey]) {
55+
grids[gridKey] = 0;
56+
}
57+
grids[gridKey] += ~~(data[i].count || 1);
58+
}
4159

42-
context.beginPath();
43-
context.rect(gridKey[0] * size + .5 + offset.x, gridKey[1] * size + .5 + offset.y, size, size);
44-
context.fillStyle = intensity.getColor(grids[gridKey]);
45-
context.fill();
46-
if (options.strokeStyle && options.lineWidth) {
47-
context.stroke();
60+
for (let gridKey in grids) {
61+
gridKey = gridKey.split(",");
62+
63+
context.beginPath();
64+
context.rect(gridKey[0] * size + .5 + offset.x, gridKey[1] * size + .5 + offset.y, size, size);
65+
context.fillStyle = intensity.getColor(grids[gridKey]);
66+
context.fill();
67+
if (options.strokeStyle && options.lineWidth) {
68+
context.stroke();
69+
}
4870
}
4971
}
5072

0 commit comments

Comments
 (0)