Я использую карты Google в своем приложении, и у меня есть веб-сервер с базой данных, заполненной значениями широты / долготы.Я хочу отметить их на карте, но я также хочу сгруппировать их вместе, если они находятся на определенном расстоянии друг от друга в пикселях.
Я полагаю, что если я получу все свои точки из базы данных, мне следуетв состоянии сделать что-то вроде этого (псевдокод):
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);
}
Что нужно сделать моей функции PixelsToBB с уровнем увеличения?Или, скорее, что нужно сделать моим convertToXY, convertToLng и convertToLat?Правильно ли я думаю об этом или есть лучшие способы сделать это?Я даже не уверен, что искать, так что если его спросили раньше, извините.