Met behulp van Maplace.js (google maps plugin voor jquery) probeer ik een kaart van google maps met daarop markers te laden. Dit gaat goed als ik een "statische" variabele gebruik voor de locaties, maar zodra ik dit probeer te doen via ajax werkt het niet. Zie onderstaande deel van de code:
Tot hier gaat het goed. De kaart met markers wordt geladen. Als ik vervolgens met ajax dezelfde data wil laden, werkt het niet.
Wanneer ik datageo bij bigdata.SetLocations vervang door LocsB (of andere variabele met daarin geodata), werkt het wel. De json die daadwerkelijk ontvangen wordt, bevat precies hetzelfde als de variabele LocsB.
Zoektocht op internet levert op dat de melding (uit Opera en Chrome) 'Uncaught RangeError: Maximum call stack size exceeded' weinig specifiek is. In combinatie met maplace kwam ik meldingen tegen waarbij de coordinaten niet goed geschreven waren. De werkende variabele LocsB komt echter overeen met de ontvangen json dus dat kan het niet zijn.
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
| var LocsB = [ { lat: 52.9, lon: 4.9, title: 'Huis 1', html: '<h3>Content A1</h3>', icon: 'http://maps.google.com/mapfiles/markerA.png', animation: google.maps.Animation.DROP }, { lat: 51.5, lon: -1.1, title: 'Huis 15', html: [ '<h3>Content C1</h3>', '<p>Lorem Ipsum..</p>' ].join(''), zoom: 8, icon: 'http://maps.google.com/mapfiles/markerC.png' } ]; var datahtml = '<div id="gmap-big" style="width:100%;height:600px;"></div>'; $('.itembar').html(datahtml); bigdata = new Maplace({ map_div: '#gmap-big', show_infowindows: false, locations: LocsB, shared: { zoom: 8, html: '%index' } }); |
Tot hier gaat het goed. De kaart met markers wordt geladen. Als ik vervolgens met ajax dezelfde data wil laden, werkt het niet.
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| $.ajax({ url: '<?php echo $locationhost; ?>/functions/results.php?datatype=geojson', type: 'post', data: $('#filterform').serialize(), success: function(datageo) { $('.wrap_controls').remove(); \\ Hier gaat het fout. bigdata.SetLocations(datageo); bigdata.Load(); } }); |
Wanneer ik datageo bij bigdata.SetLocations vervang door LocsB (of andere variabele met daarin geodata), werkt het wel. De json die daadwerkelijk ontvangen wordt, bevat precies hetzelfde als de variabele LocsB.
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| [ { lat: 52.9, lon: 4.9, title: 'Huis 1', html: '<h3>Content A1</h3>', icon: 'http://maps.google.com/mapfiles/markerA.png', animation: google.maps.Animation.DROP }, { lat: 51.5, lon: -1.1, title: 'Huis 15', html: [ '<h3>Content C1</h3>', '<p>Lorem Ipsum..</p>' ].join(''), zoom: 8, icon: 'http://maps.google.com/mapfiles/markerC.png' } ]; |
Zoektocht op internet levert op dat de melding (uit Opera en Chrome) 'Uncaught RangeError: Maximum call stack size exceeded' weinig specifiek is. In combinatie met maplace kwam ik meldingen tegen waarbij de coordinaten niet goed geschreven waren. De werkende variabele LocsB komt echter overeen met de ontvangen json dus dat kan het niet zijn.