一、海图开发示例
1. 以qt开发为例,选择对应的编译模式,在.Pro文件中加入海图引擎dll文件。
LIBS+=D:\\ECDIS\\ecdis.dll
2,在main 函数中载入海图库文件和海图文件。
3,在窗口重绘函数中调用海图绘制即可
二、主要接口
/**
*
* @brief ecsIntil 初始化海图引擎,载入海图lib颜色及符号库文件 *
*/
extern "C" int ecsIntil()
/**
*
* @brief paintIntil 初始化绘图工具 每次绘制前需初始化
* @param painter 绘图对象
* @param w 绘图画布宽
* @param h 画图画布高
* @param ecdis 电子海图对象
*/
void paintIntil(QPainter &painter,int w, int h,Ecdis &ecdis)
/**
* 载入电子海图
* filename:电子海图存储位置
*/
extern "C" int loadEcs(char * filename)
/**
* 缩放比例尺
* Ecdis:电子海图对象
*/
extern "C" void smallScale(Ecdis *ecdis)
/**
*放大比例尺
* ecdis:电子海图对象
*/
extern "C" void addScale(Ecdis *ecdis)
/**
* 设置显示模式
* model 显示模式
*/
extern "C" void setDisplaygroup(int model)
/**
* 设置等深线值
* contour 等深线值
*/
extern "C" void setContour(int contour)
/**
*设置显示颜色
*
* color 颜色值 1,2,3,4,5
*/
extern "C" void setDisplaycolor(int color)
/**
* @brief setDisplaymodel 设置符号模式
* @param model 纸质符号,简单符号
*/
void setDisplaymodel(int model)
/**
* @brief setText 设置语言文字
* @param model 本国语言 英文
*/
void setText(int model)
/**
* @brief showLight 显示灯标描述文字
* @param model 显示 不显示
*/
void showLight(int model)
/**
* @brief setAlltext 是否显示文字
* @param model 显示 不显示
*/
void setAlltext(int model)
/**
* @brief showSound 是否显示海图边界
* @param model 显示或者不显示
*/
void showSound(int model)
/**
* @brief setDisplaydepth 显示或者关闭等深线
*/
void setDisplaydepthline(){
/**
* @brief setsafedepthline 设置等深线颜色标识
* value 颜色等深线值
*/
void setsafedepthline(int value){
/**
* @brief moveMap 只移动电子海图
* @param downx 按下x
* @param downy 按下y
* @param upx 弹起x
* @param upy 弹起y
* @param ecdis 电子海图对象
*/
void moveMap(int downx, int downy, int upx, int upy,Ecdis *ecdis)
/**
* @brief moveMap 移动海图同时移动切片地图
* @param downx 按下坐标
* @param downy 按下坐标
* @param upx 弹起坐标
* @param upy 弹起坐标
* @param map 切片地图
* @param ecdis 电子海图
*/
void moveEcdisMap(int downx, int downy, int upx, int upy,Map *map,Ecdis *ecdis)
/**
* @brief getEcslist 获取电子海图列表,此接口没有问题
* @param ecslist 数组传入时默认传入的是首地址指针
* @return
*/
int getEcslist( Ecslist ecslist[])
/**
* @brief getEcsnum 获取电子海图数量
* @return 数量
*/
int getEcsnum()
/**
* @brief getLatlon 获取像素点位置的经纬度
* @param x 像素点x
* @param y 像素点y
* @param geopoint 返回值存储点
* @param ecdis 地图对象
*/
void getLatlon(int x, int y, GeoPoint *geopoint,Ecdis *ecdis)
/**
* @brief getxy 根据经纬点获取像素坐标
* @param pointout 返回像素点坐标
* @param point 传入的经纬度坐标
* @param ecdis 地图对象
*/
void getxy(POINT_ *pointout , GeoPoint *point,Ecdis *ecdis)
/**
* @brief getCenter 获取地图中心点
* @param center 中心点坐标
* @param ecdis
*/
void getCenter(GeoPoint * center,Ecdis *ecdis)
/**
* @brief deleteEcs 删除某张海图
* @param mapname 海图名称
* @return
*/
bool deleteEcs(char * mapname)
/**
* @brief showBound 显示边界
* @param model 1 显示 2 不显示
*/
void showBound(int model)
/**
*绘制地图
* ecdis: 地图对象
*/
extern "C" int paintEcs(Ecdis *ecdis)
/**
航迹汇算
* @brief track
* @param lat 位置
* @param lon 位置
* @param speed 速度
* @param course_land 航向
* @param minute 时间
* @return 返回推算点位置
*/
POINT_ track(double lat ,double lon, float speed,float course_land,float minute) {
/**
* @brief getBear获取方位
* @param lon 起始点经度
* @param lat 起始点纬度
* @param lat1 目标点纬度
* @param lon1 目标点经度
* @return 单位度
*/
double getBear(double lon,double lat ,double lat1, double lon1) {
/**
* @brief GetDistance 求距离 精确大圆算法
* @param lon 起始点经度
* @param lat 起始点纬度
* @param lat1 目标点纬度
* @param lon1 目标点经度
* @return 距离 单位米
*/
double GetDistance(double lat,double lon ,double lat1, double lng1) {
/**
获取经纬度处的水深值
* @brief getdepth
* @param lat 纬度
* @param lon 经度
*/
bool getdepth(double lat,double lon,Depth *pdepth){
/**
* @brief setCentermap 设置电子海图及切片电子海图的中心点
* @param lat 中心点纬度
* @param lon 中心点经度
* @param ecdis 海图
* @param map 切片地图
*/
void setCentermap(double lat,double lon,Map *map,Ecdis *ecdis){
/**
* @brief paintlatlon 绘制经纬度网格
* @param painter 绘画对象
* @param ecdis 电子海图对象
*/
void paintlatlon(QPainter &painter,Ecdis *ecdis){
/**
* @brief paintm 绘制小方格
* @param painter 绘制对象
* @param ecdis 电子海图
* @param m 间距,单位 :米
*/
void paintm(QPainter &painter,Ecdis *ecdis,float m){
/**
* @brief drawDistcircle 测量距离时绘制地理大圆
* @param start 起始点经纬度
* @param end 结束点经纬度
* @param painter 绘制对象
* @param ecdis 地图对象
*/
void drawDistcircle(GeoPoint &start,GeoPoint &end,QPainter &painter,Ecdis *ecdis){
/**
* @brief ab_cross_cd 求ab是否与cd相交,交点为p。
* @param a // 端点
* @param b // 端点
* @param c // 端点
* @param d // 端点
* @param p //交点
* @return 1规范相交,0交点是一线段的端点,-1不相交。
*/
int ab_cross_cd (POINT_ &a,POINT_ &b,POINT_ &c,POINT_ &d,POINT_ &p) //
/**
* @brief ab_cross_cd 求ab是否与cd相交,交点为p。
* @param a // 端点
* @param b // 端点
* @param c // 端点
* @param d // 端点
* @param p //交点
* @return 1规范相交,0交点是一线段的端点,-1不相交。
*/
int ab_cross_cd (POINT_ &a,POINT_ &b,POINT_ &c,POINT_ &d,POINT_ &p) /
/**
* @brief paintLine 绘制线
* @param start 起始点
* @param end 结束点
* @param width 线宽
* @param color 颜色
* @param type 线型
*/
void paintLine(POINT_ start,POINT_ end,int width, int color,int type){
/**
* @brief paintPolygon 绘制多边形
* @param point 多边形点数组
* @param pointnum 点的个数
* @param color 填充颜色,支持透明
*/
void paintPolygon(POINT_ point[],int pointnum,int color){
/**
* @brief PointImg 绘制图标 图像
* @param point 绘制点
* @param imgpath 图片地址
* @param width 图片 宽度
* @param height 图片宽度
*/
void PointImg(POINT_ point ,char * imgpath,int width,int height){
/**
* @brief PointImg 绘制图标 图像 跟随比例缩放
* @param point 绘制点
* @param imgpath 图片地址
* @param width 图片原始宽度
* @param height 图片原始宽度
* @param index 缩放比例
*/
void PointImg(POINT_ point ,char * imgpath,int width,int height,int index){
/**
* @brief Pointarc 绘制圆形
* @param lefttop 绘制左上角
* @param bootomright 绘制右下角
*/
void Pointarc(POINT_ lefttop,POINT_ bootomright){
三、郑重承诺
海图源码可出售,签订正式的购买合同,提供为期一年的售后服务,保证项目集成成功,根据需要在线提供视频教学,讲解海图的相关解析知识,海图引擎的集成,引擎相关接口的使用方法。