我在我的應用程序中使用谷歌地圖,並且我有一個帶有經緯度值的數據庫的網絡服務器。我想在地圖上標記它們,但是如果它們在彼此的某個像素距離內,我也想將它們聚類在一起。將緯度/經度轉換爲像素並返回
我想,如果我從數據庫中檢索我所有的點,我應該可以做這樣的事情(僞):
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需要做什麼?我是否正確地思考這個問題,還是有更好的方法來做到這一點? 我甚至不確定要搜索什麼,所以如果在對不起之前詢問它。