Met erg veel globals en losse functies heb ik wat dingen gedaan met Google Maps. Vanavond wilde ik de rotzooi eens opruimen en de code herschrijven naar wat leesbaardere code, zonder globals.
De verandering geeft het zelfde resultaat, echter het tonen van de iconen op de map duurt circa 1,5x zo lang. Is dit gewoon een probleem met oo in JavaScript of moet ik gaan optimaliseren?
De verandering geeft het zelfde resultaat, echter het tonen van de iconen op de map duurt circa 1,5x zo lang. Is dit gewoon een probleem met oo in JavaScript of moet ik gaan optimaliseren?
JavaScript:
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
| function cMap(){ /** * Init map */ this.init = function(sMapId, fLat, fLong, iZoom){ this.oMap = new GMap2(this.o(sMapId)); this.oMap.addControl(new GLargeMapControl()); this.oMap.setCenter(new GLatLng(fLat, fLong), iZoom); } /** * Zet markers op de kaart in batches */ this.setMarkers = function(){ // maxcount resetten if (this.iMax > this.iMarkerCount){ this.iMax = this.iMarkerCount; } for (var i = this.iStart; i < this.iMax; i++){ this.oPoints[i] = new GMarker(new GLatLng(this.aMarkers[i]['lat'], this.aMarkers[i]['lon'])); this.oMap.addOverlay(this.oPoints[i]); } if (this.iStart >= this.iCount){ //clean up this.aMarkers = null; clearInterval(this.oInterval); } this.iStart = this.iMax; this.iMax += this.iInterval; this.setPreloader(this.iMax, this.iMarkerCount); } this.initPreloader = function(sPreloaderId){ this.oPreloader = this.o(sPreloaderId); } this.setPreloader = function(iCurrent, iTotal){ if (iCurrent > 0){ this.oPreloader.style.width = Math.ceil((iCurrent / iTotal) * 100) + '%'; } } this.hideMarkers = function(){ var i = this.iMarkerCount; while(i--){ this.oPoints[i].hide(); } } this.showMarkers = function(){ var i = this.iMarkerCount; while(i--){ this.oPoints[i].show(); } } /** * zet een interval voor markers in batches */ this.setupMarkers = function(aMarkers) { // aantal markers per keer op kaart this.iInterval = 5; this.aMarkers = aMarkers; this.iStart = 0; this.iMax = this.iInterval; this.iMarkerCount = this.aMarkers.length; this.oPoints = []; var self = this; this.oInterval = setInterval(function() {self.setMarkers()}, 100); } this.o = function(sId){ return document.getElementById(sId); } } onload = function(){ oMap = new cMap(); oMap.init('map', 51.9751527527427, 5.336437225341797, 13); oMap.initPreloader('prel'); // aMarker uit json file oMap.setupMarkers(aMarkers); } |
[ Voor 4% gewijzigd door orf op 19-02-2007 23:15 ]