Tôi đang sử dụng bản đồ google trong ứng dụng của mình và tôi có máy chủ web có dữ liệu được chứa đầy giá trị lat/lon. Tôi muốn đánh dấu chúng trên bản đồ, nhưng tôi cũng muốn nhóm chúng lại với nhau nếu chúng nằm trong một khoảng cách pixel nhất định của eachother.Chuyển đổi lat/lon thành pixel và quay lại
Tôi hình dung nếu tôi lấy tất cả các điểm của tôi từ cơ sở dữ liệu, tôi sẽ có thể làm điều gì đó như thế này (giả):
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);
}
Điều gì sẽ pixelsToBB chức năng của tôi cần phải làm với các zoomlevel? Hoặc thay vì những gì sẽ convertToXY của tôi, convertToLng và convertToLat cần phải làm gì? Tôi có nghĩ về điều này đúng không, hoặc có cách nào tốt hơn để làm điều đó không? Tôi thậm chí không chắc chắn những gì để tìm kiếm, vì vậy nếu nó được hỏi trước khi tôi xin lỗi.