Tôi hiện đang xây dựng một ứng dụng để hiển thị tất cả các cây được gắn thẻ địa lý ở một thành phố cụ thể. Các cột chính tôi đang sử dụng để lấy dữ liệu từ bảng như sau,Tìm nạp tất cả các điểm từ cơ sở dữ liệu bên trong hộp giới hạn tọa độ theo hướng đông bắc và tây nam trong MySQL
+-----------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+-------+
| tree_geotags_id | int(11) | NO | PRI | None | |
| lattitude_dl | double(9,7) | YES | | NULL | |
| longitude_dl | double(9,7) | YES | | NULL | |
+-----------------+-------------+------+-----+---------+-------+
Bảng có hơn 158.000 dòng.
Hiện nay tôi đang sử dụng các truy vấn sau đây để có được đầu ra của tôi,
SELECT gt.tree_geotags_id, gt.latitude_dl, gt.longitude_dl,
SQRT(
POW(69.1 * (gt.latitude_dl - [ center_lat ]), 2) +
POW(69.1 * ([ center_lon ] - gt.longitude_dl) * COS(gt.latitude_dl/57.3), 2)
) AS distance
FROM tree_geotags_t gt
HAVING distance < 0.4 ORDER BY distance
Điều này, không có gì, rồi nó lấy tất cả hồ sơ tại một bán kính 0,4. Tôi sử dụng cuộc gọi ajax để tìm nạp dữ liệu, mỗi khi tọa độ trung tâm của bản đồ thay đổi (trên bản đồ chảo hoặc thu phóng), chuyển dữ liệu đã tìm nạp thành định dạng geojson rồi tải nó lên bản đồ dưới dạng lớp. Vấn đề tôi gặp phải ở đây là ở những nơi có mật độ cây rất cao, phải mất một thời gian dài để bản đồ đặt tất cả các điểm và vì nó lấy nó trên bán kính, nó tải điểm ngay cả bên ngoài khung nhìn.
Tôi cần truy vấn chỉ tải dữ liệu trong tọa độ bên trong chế độ xem, sử dụng tọa độ đông bắc và tây nam làm ranh giới. Tôi đã tìm kiếm khá lâu ở đây nhưng không thể tìm thấy bất cứ điều gì phù hợp với yêu cầu của tôi. Hãy giúp tôi ra. Cảm ơn trước..!!
Thêm mệnh đề WHERE loại trừ các mục nhập có vĩ độ/vĩ độ thấp/lớn hơn giá trị mục tiêu của bạn…? – CBroe