TatukGIS Developer Kernel使用教程:如何为FMX创建第一个应用程序

概述:TatukGIS Developer Kernel(DK)是一个用于开发自定义地理信息系统(GIS)应用程序以及解决方案的综合性软件开发工具包(SDK)。本篇文章主要介绍用DK11为FMX创建一个应用程序,现在就跟着小编来了解一下吧~

# 31款JAVA开发必备控件和工具 # 界面/文档管理/报表/IDE等4000款产品火热销售中 >>

TatukGIS Developer Kernel(DK)是一个用于开发自定义地理信息系统(GIS)应用程序以及解决方案的综合性软件开发工具包(SDK)。其功能强大,价格适中,个人、公司及政府等客户都需喜欢使用。感兴趣的朋友可以下载来用一下哦^-^

点击下载TatukGIS Developer Kernel免费版

本篇文章主要介绍用DK11为FMX创建一个应用程序,现在就跟着小编来了解一下吧~

创建新项目

创建多设备应用程序。然后选择空白应用程序。

image1.png

设计形式

打开“设计”选项卡并在空白表单上添加控件。从工具选项板中选择控件。

工具选项板包含设计表单的所有组件。专用TatukGIS组件包含在“TatukGIS”类别中。

image2.png

对象检查器包含与指定对象关联的属性和事件。在本节中,您可以设置:标题、名称、对齐、位置、大小等。

image3.png

1、添加TStatusBar并将TLabel放在上面。更改lblPosition的标签名称,并将其文本设置为“Position:”。

2、添加TGIS_ViewerWND。将其名称更改为“GIS”。在对象检查器中,将“对齐”设置为“客户端”。

3、添加TToolBar,将对齐设置为“顶部”。

4、向TToolBar添加四个按钮(TButton):

  • 名称:btnOpen,文本:打开

  • 名称:btnSelect,文本:选择

  • 名称:btnDrag,文本:拖动

  • 名称:btnZoom,文本:缩放

设置每个按钮对齐到“左边”。

5、添加TGIS_ControlLegend。在对象检查器中将GIS_Viewer设置为“GIS”并将“对齐”设置为“左”。双击图例中的图层调用“可视化属性”对话框。

6、将TGIS_ControlScale和TGIS_ControlNorthArrow添加到GIS(在Structure窗口中,您可以拖放组件以设置层次结构)。在对象检查器中,将“GIS”指定为GIS_Viewer。

最终结果应如下所示:

image4.png

添加代码

设计表单后,转到“代码”选项卡。

在实现部分的{$ R * .fmx}下方添加“使用System.IOUtils,GisLicense,GisTypes,GisAllLayers,GisUtils,GisLayerVector”。

  • System.IOUtils 

    返回用户的主路径或应用程序的可写临时目录或存储,如TPath.GetDocumentsPath。

  • GisLicense 

    包含有关TatukGIS许可证的信息。

  • Mistypes 

    常见的常量和类型,如TGIS_Point。经常被客户端代码频繁使用并包含它几乎是一个要求。

  • GisAllLayers 

    允许使用TatukGIS Samples数据文件夹中的图层。

  • GisUtils 

    GisPoint()等常用方法包含在TGIS_Utils类方法中。经常被客户端代码使用并包含它几乎是一个要求。

GisLayerVector - 包含类似TGIS_Shape、TGIS_LayerVector的类型。

附加事件

接下来将事件附加到组件。要附加事件处理程序,请在“对象检查器”中选择“事件”选项卡,然后双击该事件。如果要调用“OnClick”事件,也可以双击组件。在此示例中,我们使用以下事件:

  • btnaopenclick 

procedure TForm2.btnOpenClick(Sender: TObject);
beginGIS.RotationAngle := 0 ;{$IFDEF WIN32}GIS.Open( TGIS_Utils.GisSamplesDataDir + '/world/worldDCW/world.shp');{$ELSEIF Defined(MACOS) and Defined(IOS)}GIS.Open( TPath.GetDocumentsPath + PathDelim + 'world.shp')  ;{$ELSE ANDROID}GIS.Open( TPath.GetDocumentsPath + PathDelim + 'ne_10m_admin_0_countries.shp')  ;{$ENDIF}
end;
  • btnSelectClick

procedure TForm2.btnSelectClick(Sender: TObject);
beginGIS.Mode := TGIS_ViewerMode.Select ;
end;
  • btnDragClick 

procedure TForm2.btnDragClick(Sender: TObject);
beginGIS.Mode := TGIS_ViewerMode.Drag ;
  • btnZoomClick 

procedure TForm2.btnZoomClick(Sender: TObject);
beginGIS.Mode := TGIS_ViewerMode.Zoom ;
end;
  • GISTapSimpleEvent 

    点击简单事件在所选形状上闪烁,并在状态栏中显示光标的位置。要调用该事件,请使用以下代码:

 procedure TForm2.GISTapSimpleEvent(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Single);
varptg : TGIS_Point ;shp : TGIS_Shape ;
beginif GIS.IsEmpty thenexit ;if GIS.Mode <> TGIS_ViewerMode.Select thenexit ;ptg := GIS.ScreenToMap( Point(Round(X), Round(Y)) ) ;shp := TGIS_Shape( GIS.Locate( ptg, 5 / GIS.Zoom ) ) ;if not Assigned( shp ) then exit ;shp.Flash ;
lblPosition.Text := Format( 'x: %.4f, y: %.4f ', [ptg.X,  ptg.Y] ) ;
end;

将文件添加到部署

在部署中添加文件和设置路径。

使用“项目/部署”菜单项,选择Android和iOS设备平台,并为每个平台添加要与应用程序一起部署的文件,并设置“远程路径”列值:

  • 设置Android的远程路径:assets \ internal \ 

image5.png

  • 设置iOS的远程路径:StartUp \ Documents \ 

如果要同时为几个文件设置远程路径,请单击图标DK11

image7.png

 。

测试

编译并运行项目。

源代码

最终代码应如下所示:

unit Unit2;interfaceusesSystem.SysUtils,
System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types,
FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
FMX.GisControlNorthArrow, FMX.GisControlScale, FMX.Layouts, FMX.TreeView,
FMX.GisControlLegend, GisTypesUI, FMX.GisViewerWnd, FMX.Controls.Presentation ;typeTForm2 = class(TForm)ToolBar1: TToolBar;statusBar: TStatusBar;GIS: TGIS_ViewerWnd;GIS_ControlLegend1: TGIS_ControlLegend;GIS_ControlScale1: TGIS_ControlScale;GIS_ControlNorthArrow1: TGIS_ControlNorthArrow;btnOpen: TButton;btnSelect: TButton;btnDrag: TButton;btnZoom: TButton;lblPosition: TLabel;procedure GISTapSimpleEvent(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Single);procedure btnOpenClick(Sender: TObject);procedure btnSelectClick(Sender: TObject);procedure btnDragClick(Sender: TObject);procedure btnZoomClick(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm2: TForm2;implementation{$R *.fmx}uses System.IOUtils, GisLicense, GisTypes, GisAllLayers, GisUtils, GisLayerVector;procedure TForm2.btnDragClick(Sender: TObject);
beginGIS.Mode := TGIS_ViewerMode.Drag ;
end;procedure TForm2.btnOpenClick(Sender: TObject);
beginGIS.RotationAngle := 0 ;{$IFDEF WIN32}GIS.Open( TGIS_Utils.GisSamplesDataDir + '/world/worldDCW/world.shp' );{$ELSEIF Defined(MACOS) and Defined(IOS)}GIS.Open( TPath.GetDocumentsPath + PathDelim + 'world.shp' )  ;{$ELSE ANDROID}GIS.Open( TPath.GetDocumentsPath + PathDelim + 'ne_10m_admin_0_countries.shp' )  ;{$ENDIF}
end;procedure TForm2.btnSelectClick(Sender: TObject);
beginGIS.Mode := TGIS_ViewerMode.Select ;
end;procedure TForm2.btnZoomClick(Sender: TObject);
beginGIS.Mode := TGIS_ViewerMode.Zoom ;
end;procedure TForm2.GISTapSimpleEvent(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Single);
varptg : TGIS_Point ;shp : TGIS_Shape ;
beginif GIS.IsEmpty thenexit ;if GIS.Mode <> TGIS_ViewerMode.Select thenexit ;ptg := GIS.ScreenToMap( Point(Round(X), Round(Y) ) ) ;shp := TGIS_Shape( GIS.Locate( ptg, 5/GIS.Zoom ) ) ;if not Assigned( shp ) then exit ;shp.Flash ;lblPosition.Text := Format( 'x: %.4f, y: %.4f', [ptg.X, ptg.Y] ) ;
end;end.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/139733.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

846. 树的重心

输入样例 9 1 2 1 7 1 4 2 8 2 5 4 3 3 9 4 6输出样例&#xff1a; 4 分析&#xff1a;因为有n-1条边&#xff0c;所以每个点必然会连接到其他点&#xff0c;不存在孤立点&#xff0c;因此&#xff0c;我们从1-n任意点开始dfs都是可以的&#xff0c;因为无论怎么样&#xff0…

数据库:Hive转Presto(五)

此篇将所有代码都补充完了&#xff0c;之前发现有的代码写错了&#xff0c;以这篇为准&#xff0c;以下为完整代码&#xff0c;如果发现我有什么考虑不周的地方&#xff0c;可以评论提建议&#xff0c;感谢。代码是想哪写哪&#xff0c;可能比较繁琐&#xff0c;还需要优化。 …

2024年湖北建筑安全员abc三类人员考试新题库考试题库

2024年湖北建筑安全员abc三类人员考试新题库考试题库 湖北三类人员建筑安全员ABC证新题库是存在的&#xff0c;因为安管系统老更新&#xff0c;每次更新后&#xff0c;新题库&#xff08;重点题库&#xff09;就会有所变化。新题库主要是针对考试的&#xff0c;提高考试合格率…

iOS——JSONModel的使用与JSONModel的嵌套

什么是JSONModel JSONModel是一个解析JSON数据的开源库&#xff0c;可以将JSON数据直接解析成自定义的model 使用 JSONModel 非常简单,只需要将你的 model 类继承自 JSONModel ,而同时 model 中的属性名又恰巧可以和 JSON 数据中的 key 名字一样的话,那么非常恭喜你,你的工作…

电脑办公助手之桌面便签,助力高效率办公

在现代办公的快节奏中&#xff0c;大家有应接不暇的工作&#xff0c;每天面对着复杂的工作任务&#xff0c;总感觉时间不够用&#xff0c;而且工作无厘头。对于这种状态&#xff0c;大家可以选择在电脑上安装一款好用的办公便签软件来辅助日常办公。 敬业签是一款专为办公人士…

HR:“对不起,这项技能是硬性要求”

01、前言 兼容性测试主要通过人工或自动化的方式&#xff0c;在需要覆盖的终端设备上进行功能用例执行&#xff0c;查看软件性能、稳定性等是否正常。 对于需要覆盖的终端设备&#xff0c;大型互联网公司&#xff0c;像 BAT&#xff0c;基本都有自己的测试实验室&#xff0c;…

计算机网络学习笔记(三):数据链路层(待更新)

目录 3.1 基本概念 3.1.1 数据链路和帧 3.1.2 三个基本问题 3.2 类型1&#xff1a;使用点对点信道的数据链路层&#xff08;路由器&#xff09; 3.2.1 点对点协议 PPP&#xff1a;特点 3.2.2 点对点协议 PPP&#xff1a;帧格式 3.2.3 点对点协议 PPP&#xff1a;工作状态 …

Java10年技术架构演进

一、前言 又快到了1024&#xff0c;现代人都喜欢以日期的特殊含义来纪念属于自己的节日。虽然有点牵强&#xff0c;但是做件事情&#xff0c;中国人总喜欢找个节日来纪念&#xff0c;程序员也是一样。甚至连1111被定义成光棍节&#xff0c;这也算再无聊不过了。不过作为程序员…

List集合拆分为多个List

list 拆分 目录概述需求&#xff1a; 设计思路实现思路分析1.list 拆分是2.用stream的parallel实现list的分批处理3.使用stream的parallel实现list的分批处理 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full bus…

git 使用

参考 https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E8%8E%B7%E5%8F%96-Git-%E4%BB%93%E5%BA%93 文件的状态变化周期 文章目录 git 基础检查当前文件状态、查看已暂存和未暂存的修改暂存前后的变化跟踪新文件提交更新移除文件移动文件、重命名操作查看提交历史撤消…

正点原子嵌入式linux驱动开发——pinctrl和gpio子系统

在上一篇笔记中&#xff0c;学习编写了基于设备树的LED驱动&#xff0c;但是驱动的本质还是没变&#xff0c;都是配置LED灯 所使用的GPIO寄存器&#xff0c;驱动开发方式和裸机基本没区别。Linux是一个庞大而完善的系统&#xff0c;尤其是驱动框架&#xff0c;像GPIO这种最基本…

sklearn处理离散变量的问题——以决策树为例

最近做项目遇到的数据集中&#xff0c;有许多高维类别特征。catboost是可以直接指定categorical_columns的【直接进行ordered TS编码】&#xff0c;但是XGboost和随机森林甚至决策树都没有这个接口。但是在学习决策树的时候&#xff08;无论是ID3、C4.5还是CART&#xff09;&am…