目录地图相关服务选择的是四维图新
本文记录的是,将添加到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
查询结果:
前端获得结果(字段名可以自定义):
图上展示:
二、地图上查询优化
-
给数据加上图层标识
四维的地图缩放等级范围为 3~17,不过一般在12级之前,地图范围较大,可以在地图图层为12级之后,在进行数据的查询,分层级显示,例如下图,图层在12级左右 -
数据上添加单独的经纬度字段
在数据添加上 decimal 类型的经度和纬度,在查询的时候,直接根据经纬度先进行搜索范围的缩小,再进行精确查找,会比直接使用函数,搜索在指定范围内的点搜索快很多 -
地图拖动,只查询电脑屏幕所看到的地方
先获得屏幕上对角经纬度,根据对角经纬度获得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