Googlemaps API v3 clustering
Daar komt ook clustering in voor.
Dat is het 'vangen'van markers die dicht bij elkaar staan.
Omdat markers op dezelfde plek kunnen staan
(activiteiten in verschillende zalen zelfde gebouw, of zelfde gebouw, andere datum)
heb ik in dat geval voor elke marker een offset gegeven.
Nu werkt dat op zich wel.
Maar als de cluster zelf weer een extra cluster aanmaakt, werkt die niet.
Het beeld scrolt wel wat.
Het gaat volgens mij om het volgende gedeelte:
Iemand hier wel eens wat mee gedaan?
Code (php)
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
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
var mc;
var markerCluster = {gridSize: 27, maxZoom: 15};
.
.
.
.
//OFFSET BEPALEN
var min = .999999;
var max = 1.000001;
var matA = (Math.random() * (max - min) + min);
var matB = (Math.random() * (max - min) + min);
var offsetLat = post_lat[i] * matA;
var offsetLng = post_lon[i] * matB;
//POSITIE BEPALEN MARKERS
var point = new google.maps.LatLng(offsetLat, offsetLng);
var icon = customIcons[5] || {};
marker = new google.maps.Marker({
icon: icon.icon,
position: point,
map: map,
zIndex: 9999999
});
infowindow.open(map, marker);
}
})(marker, i));
cluster.push(marker);
}
}
var mc = new MarkerClusterer(map, cluster,
{imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'});
document.getElementById("info").innerHTML = "ACTIVITEITEN : "+activ;
}
var markerCluster = {gridSize: 27, maxZoom: 15};
.
.
.
.
//OFFSET BEPALEN
var min = .999999;
var max = 1.000001;
var matA = (Math.random() * (max - min) + min);
var matB = (Math.random() * (max - min) + min);
var offsetLat = post_lat[i] * matA;
var offsetLng = post_lon[i] * matB;
//POSITIE BEPALEN MARKERS
var point = new google.maps.LatLng(offsetLat, offsetLng);
var icon = customIcons[5] || {};
marker = new google.maps.Marker({
icon: icon.icon,
position: point,
map: map,
zIndex: 9999999
});
infowindow.open(map, marker);
}
})(marker, i));
cluster.push(marker);
}
}
var mc = new MarkerClusterer(map, cluster,
{imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'});
document.getElementById("info").innerHTML = "ACTIVITEITEN : "+activ;
}
HIER HET VOORBEELD:
Kijk bij "2 weken".
https://www.pctraverse.nl/Project/geoB.php
Toevoeging op 13/09/2018 14:21:49:
Ik heb wel een idee.
Maar weet nog niet hoe ik het uit moet werken...
Als markers bij elkaar worden geplaatst, dan volgt clustering.
Omdat er random wordt bepaald wat de offset is, kan er binnen de cluster
weer een cluster ontstaat.
Ik zou kunnen bekijken of het mogelijk is om een min. afstand aan te houden
tussen de markers. Nog geen idee hoe..
Gewijzigd op 13/09/2018 00:12:19 door Hans De Ridder
Heb nu de random offset vervangen door waarden waarbij de minimale afstand gegarandeerd is.
Nu werkt het naar behoren.
Toevoeging op 14/09/2018 16:40:36:
Het blijkt dat er een min. afstand moet zijn tussen markers.
Met een random offset is dat niet gegarandeerd.
Ik heb nu het random gedeelte vervangen met een code waarbij
de min. afstand lat en lng min. 0.000013 is tussen markers.
Nu werkt alles naar behoren lijkt het.