Mysql Geometry的使用 —— 地图上数据展示

地图相关服务选择的是四维图新
本文记录的是,将添加到MySQL中带有Geometry类型字段的数据,展示在地图上(后端),前端相关接口服务可看 MineMap for 2D,并进行一定的查询优化

目录

一、地图上数据展示

思路:

  • 自定义新增到数据库中的数据,必需字段包含有 Geometry(经纬度坐标)、code(区分地图上图标,如医院学校显示的图标不同),进行查询返回给前端
  • 前端拿到数据进行渲染展示,根据 code 上图标

例如向表中新增一条数据,包含名称,坐标,类型,及Double类型的经纬度

insert into mapdata (ID, name, geometry, code, jd, wd)
value ('1', '名称', ST_POINTFROMTEXT('POINT(103,36)'), '001', 
        ST_X(ST_POINTFROMTEXT('POINT(103,36)')), ST_Y(ST_POINTFROMTEXT('POINT(103,36)')))

查询语句:

SELECT id, name, ST_ASGeoJSON(geometry) geometry, code, jd, wd
FROM mapdata

查询结果:
Mysql Geometry的使用 —— 地图上数据展示

前端获得结果(字段名可以自定义):
Mysql Geometry的使用 —— 地图上数据展示

图上展示:
Mysql Geometry的使用 —— 地图上数据展示

二、地图上查询优化

  1. 给数据加上图层标识
    四维的地图缩放等级范围为 3~17,不过一般在12级之前,地图范围较大,可以在地图图层为12级之后,在进行数据的查询,分层级显示,例如下图,图层在12级左右
    Mysql Geometry的使用 —— 地图上数据展示

  2. 数据上添加单独的经纬度字段
    在数据添加上 decimal 类型的经度和纬度,在查询的时候,直接根据经纬度先进行搜索范围的缩小,再进行精确查找,会比直接使用函数,搜索在指定范围内的点搜索快很多
    Mysql Geometry的使用 —— 地图上数据展示

  3. 地图拖动,只查询电脑屏幕所看到的地方
    先获得屏幕上对角经纬度,根据对角经纬度获得Double类型上下左右经纬度,限定搜索结果只搜屏幕所能看得到的

select ST_AsGeoJSON(m.geometry) as geometry
from mapdata
where jd > 103.5 and jd < 104.5 and wd > 35.5 and wd < 36.5
上一篇:Emacs杂谈(一)Emacs环境 c++ 快捷键


下一篇:CSS 从入门到放弃系列:CSS的引入方式