Estoy usando google maps en mi aplicación, y tengo un servidor web con un databse lleno de valores lat/lon. Quiero marcarlos en el mapa, pero también quiero agruparlos si están dentro de una cierta distancia de píxel entre sí.Convertir lat/lon a píxeles y volver
Creo que si puedo recuperar todos mis puntos de la base de datos, debería ser capaz de hacer algo como esto (pseudocódigo):
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);
}
¿Qué mi función necesidad pixelsToBB que ver con la zoomLevel? O mejor dicho, ¿qué tendrían que hacer mis convertToXY, convertToLng y convertToLat? ¿Estoy pensando en esto de la manera correcta, o hay mejores formas de hacerlo? Ni siquiera estoy seguro de qué buscar, por lo que si se me ha preguntado antes, lo siento.