mysql - 从 MySQL 中东北和西南坐标的边界框内的数据库中获取所有点

标签 mysql leaflet coordinates bounding-box

我目前正在构建一个应用程序来显示特定城市中所有带有地理标记的树木。 我用来从表中获取数据的主要列如下,

+-----------------+-------------+------+-----+---------+-------+
| 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    |       |
+-----------------+-------------+------+-----+---------+-------+

该表有超过 158000 行。

目前我正在使用以下查询来获取我的输出,

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

它的作用是获取半径为 0.4 的所有记录。 我使用 ajax 调用来获取数据,每次 map 的中心坐标发生变化(在 map 上平移或缩放)时,将获取的数据转换为 geojson 格式,然后将其作为图层加载到 map 上。我遇到的问题是,在树木密度非常高的地方, map 需要很长时间才能放置所有点,并且由于它是在一个半径上获取它,所以它加载的点甚至在视口(viewport)。

我需要一个查询来仅在视口(viewport)内的坐标中加载数据,使用东北和西南坐标作为边界。我在这里搜索了很长时间但找不到找不到适合我要求的东西。请帮帮我。提前致谢..!!

最佳答案

如果有人还在看,我从这篇文章中得到了答案。

Get all records from MySQL database that are within Google Maps .getBounds?

无论如何感谢您的帮助。

关于mysql - 从 MySQL 中东北和西南坐标的边界框内的数据库中获取所有点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42438056/

相关文章:

mysql - 使用哪种关系模型来存储依赖于其他值的值?

php - 如何将此 Laravel PHP 代码简化为一个 Eloquent 查询?

javascript - leaflet如何使用js制作动态图片弹出

javascript - 如何在 R 中用传单制作的 map 上添加下载按钮?

algorithm - 计算给定方位和距离的坐标

mysql - 使用 Aulux Barcode 软件连接到 MySQL 数据库

php - 使用名字和姓氏创建唯一的 8 字符用户 ID,比较 MySQL 表中的现有用户 ID,在唯一时插入

javascript - React-leaflet-search 组件未渲染

iphone - 添加经纬度值的问题

javascript - 如何返回文本输入中字符串末尾的绝对像素坐标?