ArcGIS Experience Builder 核心概念-翻译

一、简介

可以通过构建自定义窗口小部件,创建自定义主题,自定义数据源和消息/操作来扩展Experience Builder。所有这些都可以通过使用Experience Builder的扩展框架jimu来实现,该框架基于以下组件构建:

  • ArcGIS API for JavaScript 4.x
  • React + Redux framework
  • Bootstrap 4 for user interface
  • HTML5
    在Experience Builder中开发小部件、主题等需要TypeScript。因为TypeScript具有许多优点,例如:
    • 类型错误检测
    • 更好IDE体验
    • 自我证明代码
    • 更具可读性和易懂性

二、Jimu

image.png

Jimu是一个JavaScript库,用于创建可配置的体验,并且是由以下软件包组成的可扩展性框架:
1、jimu-core
jimu-core用于程序包加载并解析应用程序配置,然后基于应用程序配置加载布局,主题和小部件。为了支持此功能定义了几个类,例如WidgetManager,ConfigManager,ThemeManager等。另外,jimu-core定义了BaseWidget、常见类型以及扩展点,这些可能会被其他包和窗口小部件扩展使用。
2、jimu-layouts
jimu-layouts包包含布局小部件的常见实现。
3、jimu-ui
jimu-ui包包含Experience 所有使用的UI组件。在引擎盖下,它使用reactstrap。此外,添加了更多不在reactstrap中的组件。
大部分使用的是reactstrap,也添加了更多不在reactstrap中的组件。为了减少加载负担,将组件分为一些条目,例如index, setting-components, sql-expression-builder等。有关详细信息,请参见API。
4、jimu-arcgis
jimu-arcgis包包含需要ArcGIS API for JavaScript 4.x才能运行的所有组件。
5、jimu-for-builder
jimu-for-builder包支持开发widget设置页面。

三、Data source

数据源定义widget如何访问数据。例如,当数据来自远程服务器时,widget可以使用数据源类向客户端查询数据。另外当widget生成数据时,可以将其放入数据源类中,以供另一个widget使用。
在较高级别上,数据源具有模式、记录,并且可能具有某些子/父数据源。此外,每个数据源都有一个type,ID和status 来帮助识别它。 DataSource接口在jimu-core包中定义;它定义了以下一些方法和属性:

  • id:数据源ID
  • type:widget中使用的属性,用于检查其使用的数据源类型。
  • fetchSchema:每个数据源都必须实现此方法以返回模式。这是在远程数据服务中定义的模式。例如,当用户在Experience Builder中添加数据源时,该数据源模式未保存在app config中,而是调用fetchSchema方法以获取最新的数据源模式。
  • getSchema:widget用来访问数据源模式和数据源中的字段的方法。
  • getRecords:widget用来访问数据源中的数据记录的方法。
    数据源可以具有子数据源。因此,您可能会包含多个数据源,以使其更易于使用。这种数据源称为DataSourceSet。 WebMapDataSource是一个DataSourceSet。一旦isDataSourceSet属性设置为true,DataSourceSet也是一种数据源。数据源由DataSourceManager管理,以创建和获取数据源。
    为了简化数据源的使用,定义了一个DataSourceComponent组件。这个组件接受useDataSource属性,并通过回调返回数据源对象及其状态信息。该组件还接受一个函数作为其子级,该子级可用于获取数据源对象和信息以便在数据源中呈现数据。DataSourceComponent组件还可以接受可选的query属性,并且在更改查询时将重新加载数据。对于仅需要查询的数据,可以使用DataQueryComponent组件。它具有与DataSourceComponent相似的接口,但在内部调用query。
    为了支持最常用的数据格式例如要素服务,该API具有QueriableDataSource接口和抽象类AbstractQueriableDataSource。例如,独立要素图层将返回FeatureQueryDataSource,而包含要素图层的webmap / webscene将返回一个或多个FeatureLayerDataSource。

四、Repeated Data source

RepeatedDataSourceProvider提供的数据源称为重复数据源。提供数据源的窗口小部件的所有子窗口小部件都将接收重复的数据源。类似于React的context。widget可以通过this.props.repeatedDataSource访问重复的数据源。重复的数据源将获取数据源的ID,记录和recordIndex。任何widget都可以使用RepeatedDataSourceProvider提供重复的数据源。Experience Builder中的“List”widget是一个很好的示例,它提供了重复的数据源。要使用重复的数据源,请在widget的清单文件中添加supportRepeat属性。
通常,数据源保存在两个位置:数据源对象在DataSourceManager中保存和管理,数据源信息保存在redux app中。使用DataSourceComponent时,组件将调用DataSourceManager来按需创建数据源,并通过回调返回的属性返回数据源对象和dataSourceInfo。在dataSourceInfo中,可以返回数据源的instanceStatus,状态,selectedIds等。
ArcGIS API for JavaScript中有许多类可用于管理或显示要素。这些类作为数据源包装在jimu-arcgis包中。例如,WebMapDataSource,FeatureLayerDataSource等是此包的一部分。这些对象是通过数据源访问的。

五、Map/Scene View

View的概念与ArcGIS API for JavaScript相同,但是在Experience Builder中,View被封装为JimuMapView,以确保在创建widgets,消息/操作等时具有一致的可扩展性模型。要创建JimuMapView对象,widget可以使用JimuMapViewManager.createJimuMapView()方法。 JimuMapView对象具有以下主要属性:

  • view:地图/场景视图对象。
  • datasourceId:创建视图的数据源(webmap / webscene)
  • mapWidgetId:创建对象的小部件
  • jimuLayerViews:图层视图对象包装器
    需要使用地图/场景视图的小部件可以使用设置页面中的JimuMapViewSelector组件来选择地图/场景视图。这还将使用JimuMapViewComponent访问JimuMapView对象。

六、Page

Experience 中的页面不是实际的HTML网页;它是一个概念性页面,但是,其行为类似于实际的HTML网页。它是通过使用div HTML标签实现的。Experience 必须至少有一页,并且可以有多页。Experience Builder中有两种页面布局类型:全屏应用程序页面和线性滚动页面;前者看起来像一个应用程序,而后者看起来像一个网页。
页面内容(小部件/部分)是根据布局规则组织的,例如固定布局和流程布局。为了使页面响应不同的屏幕尺寸,Experiment Builder支持按尺寸模式配置布局。这些由大,中和小定义。每种布局的配置都是对Experience 的适应,可通过对应用程序的更多自定义和更好地使用屏幕大小来提供更大的灵活性。City Explorer模板就是这种设计的一个很好的例证。在大中型屏幕上查看该应用程序时,该地图可见并且包含在配置中。但是,当在移动设备上查看地图时,地图小部件会从第一页中删除,并且仅在用户在列表中选择一个地图项后才显示在第二页上

七、Theme

Theme定义了Experience 的外观和感觉。体验包括即用型(OOB)主题,并且可以创建自定义主题。了解有关主题开发的更多信息。

八、Widget

Widget是可配置的功能单元。它是用于创建体验页面的构建块。 Experience Builder提供了OOB小部件,例如地图,按钮,列表等,并且可以创建自定义小部件。Widget通常提供设置UI,以允许用户在构建器环境中配置其功能。如果窗口小部件具有可配置的选项,但不包含设置UI,则可以使用JSON编辑器对其进行配置。

九、Message and action

消息/动作是一种支持小部件到小部件,小部件到框架以及框架到小部件之间的通信的方式。小部件/框架可以发布消息,并且他们也可以收听消息。消息由MessageType标识,该消息类型由jimu框架定义。 jimu中定义了一些消息类型,例如ExtentChange和DataRecordsSelectionChange。将来的版本中将有更多消息类型。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,036评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,046评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,411评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,622评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,661评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,521评论 1 304
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,288评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,200评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,644评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,837评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,953评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,673评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,281评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,889评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,011评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,119评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,901评论 2 355

推荐阅读更多精彩内容