通用地图服务 - xinwu-yang/cube-java GitHub Wiki
✅地图通用点API
✅地图通用区域API
✅地图通用轨迹API
✅坐标系转换工具类
⬜聚合查询API
⬜地图区域绘制工具
⬜天网视频点位查询API
⬜警力资源查询API
⬜报警事件查询API
⬜人员轨迹查询API
⬜车辆轨迹查询API
<dependency>
<groupId>com.tievd.cube.starter</groupId>
<artifactId>magic-map-spring-boot-starter</artifactId>
<version>${latest}</version>
</dependency>
magic-api:
web: /magic/web
resource:
# 配置文件存储位置。当以classpath开头时,为只读模式
# mac用户请改为可读写的目录
# 如果不想存到文件中,可以参考配置将接口信息存到数据库、Redis中(或自定义)
location: D:\\data\\magic-api
banner: false
cube:
magic-map:
# 相对路径从classpath读取,绝对路径从系统目录读取
query-dir: C:\\Users\\xinwuy\\magic-sql.xml
git clone http://125.71.201.11:9004/cube-commons/magic-map-api.git -b 对应版本号
magic-api.resource.location 指向这个下载目录
- 新建XML文件格式如下,并在yml中配置 cube.magic-map.query-dir XML地址
相对路径从classpath读取,绝对路径从系统目录读取
<?xml version="1.0" encoding="UTF-8"?>
<queries>
<query name="selectPoint">
select id, point_name as name, busId as businessCode, lat, lng from sys_map_point ?{username,where username like ${username}}
</query>
<query name="selectArea">
select id, area_name as name, busId as businessCode, c as geoJson from sys_map_area ?{name,where name like ${name}}
</query>
</queries>
- SQL查询需要满足一定的数据结构,不然数据查询出来有问题,具体参考:
public class MapPoint implements Serializable {
/**
* 主键
*/
private String id;
/**
* 名称
*/
private String name;
/**
* 地址
*/
private String address;
/**
* 业务唯一编码,如:设备id、序列号之类的
*/
private String businessCode;
/**
* 经度
*/
private String lat;
/**
* 纬度
*/
private String lng;
/**
* 坐标系类型,如:百度、高德、ArcGis、腾讯、PGis
*/
private String coordinateType;
/**
* 所属地区
*/
private String areaId;
/**
* 内置类型
*/
private Integer type;
/**
* 点图标
*/
private String iconUrl;
/**
* 拓展字段
*/
private JSONObject extra;
}
public class MapArea implements Serializable {
/**
* 主键
*/
private String id;
/**
* 名称
*/
private String name;
/**
* 业务唯一编码,如:设备id、序列号之类的
*/
private String businessCode;
/**
* GEOJson数据
*/
private String geoJson;
/**
* 拓展字段
*/
private JSONObject extra;
}
public class MapTrack implements Serializable {
/**
* 主键
*/
private String id;
/**
* 名称
*/
private String name;
/**
* 业务唯一编码,如:设备id、序列号之类的
*/
private String businessCode;
/**
* 坐标系类型,如:百度、高德、ArcGis、腾讯、PGis
*/
private String coordinateType;
/**
* 所属地区
*/
private String areaId;
/**
* 内置类型
*/
private Integer type;
/**
* 轨迹点
*/
List<MapTrackPoint> trackPoints;
/**
* 拓展字段
*/
private JSONObject extra;
}
public class MapTrackPoint implements Serializable {
/**
* 主键
*/
private String id;
/**
* 轨迹id
*/
private String trackId;
/**
* 经度
*/
private String lat;
/**
* 纬度
*/
private String lng;
/**
* 上报时间
*/
private Date time;
/**
* 拓展字段
*/
private JSONObject extra;
}
# 资源点相关API
/map/point/search 资源点搜索 | GET | 参数:query 必填 查询名称 | 其他业务参数根据SQL中参数名对应直接透传 | 返回值:List<MapPoint>
# 区域相关API
/map/area/search 区域搜索 | GET | 参数:query 必填 查询名称 | 其他业务参数根据SQL中参数名对应直接透传 | 返回值:List<MapArea>
# 轨迹相关API
/map/track/search 轨迹搜索 | GET | 参数:query 必填 查询名称、 trackPointQuery 非必填 轨迹点子查询名称 | 其他业务参数根据SQL中参数名对应直接透传 | 返回值:List<MapTrack>
# 全局配置相关API
/map/config/query/refresh 刷新SQL配置 | GET
- 资源点后处理,新增类并实现 com.tievd.cube.starter.magicmap.handler.IDataHandler<MapPoint/MapArea/MapTrack/MapTrackPoint> 接口
- 注解 @Component,注入到Spring容器
- 注解 @Order 可配置后处理顺序
- query 函数非必须实现,默认全局处理,指定query则重写函数填写查询名称
@Component
public class PointHandler implements IDataHandler<MapPoint> {
@Override
public void handle(List<MapPoint> list) {
// 待处理数据 list
}
@Override
// 此函数非必须重写,不重写默认全局处理
public String query() {
return "selectPoints";
}
}
- 新增类并实现 com.tievd.cube.starter.magicmap.handler.IParamsHandler 接口。
- 同一查询支持多次处理,注解 @Order 可配置后处理顺序。
- query 函数非必须实现,默认全局处理,指定query则重写函数填写查询名称
@Component
public class DemoParamHandler implements IParamsHandler {
@Autowired
private MagicResourceService magicResourceService;
@Override
public void handle(ApiInfo info, MagicScriptContext context, HttpServletRequest request, HttpServletResponse response) {
// 得到参数列表
List<Parameter> parameters = info.getParameters();
// 得到请求接口路径
String magicReqPath = magicResourceService.getGroupPath(info.getGroupId()) + info.getPath();
// 以上信息也可以从原生 HttpServletRequest 获取
request.getParameter("key");
// 设置自定义参数映射到SQL参数
context.set("key", "value");
}
@Override
// 此函数非必须重写,不重写默认全局处理
public String query() {
// 要处理的查询名称,匹配上才处理
return "selectPoints";
}
}
提供转换工具类 com.tievd.cube.starter.magicmap.util.CoordinateUtil
支持:
- WGS84:谷歌地图 OMS ArcGis Bing
- 火星坐标系:高德地图 腾讯地图
- 百度坐标系:百度地图
// 世界标准地理坐标(WGS - 84) 转换成 中国国测局地理坐标(GCJ-02)<火星坐标>
wgs84ToGcj02(LatLng location)
// 中国国测局地理坐标(GCJ-02) 转换成 世界标准地理坐标(WGS-84)
gcj02ToWgs84(LatLng location)
// 世界标准地理坐标(WGS - 84) 转换成 百度地理坐标(BD-09)
wgs84ToBd09(LatLng location)
// 中国国测局地理坐标(GCJ-02)<火星坐标> 转换成 百度地理坐标(BD-09)
gcj02ToBd09(LatLng location)
// 百度地理坐标(BD-09) 转换成 中国国测局地理坐标(GCJ-02)<火星坐标>
bd09ToGcj02(LatLng location)
// 百度地理坐标(BD-09) 转换成 世界标准地理坐标(WGS-84)
bd09ToWgs84(LatLng location)