J'utilise google maps dans mon application, et j'ai un serveur web avec une base de données remplie de valeurs lat/lon. Je veux les marquer sur la carte, mais je veux aussi les regrouper s'ils sont à une certaine distance de chaque pixel.Conversion lat/lon en pixels et retour
Je suppose que si je récupère tous mes points de la base de données, je devrais être capable de faire quelque chose comme ça (pseudo-code):
clusters[];
while(count(points)) {
cluster[];
point = points.pop();
boundingbox = pixelsToBB(point, pixeldistance, zoomlevel);
query = "select * from database where lat > boundingbox.minlat
and lat < boundingbox.maxlat and lng > boundingbox.minlng
and lng < boundingbox.maxlng";
for (result in executedquery) {
cluster[] += result;
points.remove(result);
}
clusters[] += cluster;
}
pixelsToBB(point, distance, zoomlevel) {
center = convertXY(point, zoomlevel);
maxlng = convertToLng(center.X, distance, zoomlevel);
minlng = convertToLng(center.X, -distance, zoomlevel);
minlat = convertToLat(center.Y, -distance, zoomlevel);
maxlat = convertToLat(center.Y, distance, zoomlevel);
return boundingbox(maxlng, maxlat, minlng, minlat);
}
Quelle serait ma fonction pixelsToBB besoin de faire avec le zoomlevel? OU plutôt qu'est-ce que mes convertToXY, convertToLng et convertToLat doivent faire? Est-ce que j'y pense de la bonne façon ou y a-t-il de meilleures façons de le faire? Je ne suis même pas sûr de ce qu'il faut chercher, donc si on vous l'a demandé avant de m'excuser.