ArcGIS地理平台开发基础(附练习代码)

3
分享 2018-01-10
1.Portal for ArcGIS 定制开发

Portal for ArcGIS主要有两种定制方法,一种是基础定制,是由portal提供的,面向系统管理员。另一种就是高级定制,面向开发人员,主要利用Portal REST API进行定制开发。

基础定制是在原生portal网页中自定义其主题、背景图片等常规设置。

高级定制要掌握Portal for ArcGIS,根据需求,利用Portal REST API进行扩展开发。第一要有语言基础,如果对网站UI进行定制修改,html、css和javascript肯定是必须的,如果还要进行功能扩展,那就用到后台语言,java或C#或其他,根据自己需求而定。除了语言之外,我们还要熟悉掌握portal, 一要了解它的技术架构,portal前端采用的是dojo架构,后台是java实现的,多源数据是通过postgresql和文件关联的方式管理,最重要的一点我们要熟悉功能,并探究它的实现过程。最简单的方法就是浏览器网络监控,从网络监控了解熟悉rest api。

2.Portal REST API简介

Portal REST API 入口:

REST API入口地址: https://域名/arcgis/sharing/

管理员REST API入口地址:https://域名/arcgis/portaladmin



先看一下接口的文档介绍。 community、content、portals

我们总结一下:Generate Token接口 用于生成token,使用token去请求资源。对于token,就像是仓库里的钥匙,只有获得了token,才能进入Portal中去拿到资源。

Search接口,用于搜索资源,Community里的接口关于用户、群组的操作,Content里的接口用于资源内容的操作,包括我的内容中文件夹的操作

Portal REST API的主要内容,就是Portal for ArcGIS这个产品前端页面的所有功能。 因为,前端页面就是调用Portal REST API开发出来的,只不过是Esri的工程师开发的,而不是我们开发的。

如果你愿意投入时间和精力,你也可以做出来一个一模一样,甚至更好的产品! 这就是 我们后面要讲的 定制开发的工作内容。

3.开发环境搭建

推荐的框架组合是Bootstrap+jQuery+RequireJS(附源码)















4. 简单实例(附源码)

(1) 获取token

· 第一步:按照上面的开发框架搭建步骤搭建一个项目:PortalRestApiDemo。(或者复制练习数据中的框架文件夹下的FrontEndFrame文件夹,粘贴,改一个名字:PortalRestApiDemo)

· 第二步:在application目录下新建文件夹demoFiles用于放置html页面。

· 第三步:在widgets目录下新建文件夹portalRestApi用于放置API的功能模块。



(1)、获取token

· 1)新建模块 generateToken.js,用于编写获取token的逻辑代码



上面说了 一个js文件就是一个模块, 那么这个 generateToken.js 模块 的作用是什么呢? 根据名字看出是为了获取token的。 没错,将获得token的代码封装成了一个模块,调用的时候简单方便,只需传入几个简单的参数就ok了。

· A.Portal REST API中Generate Token的URL参数要求:



B.Portal RST API中Generate Token的Request参数要求:



C. Portal REST API中Generate Token的Response参数,用于解析数据:





· 2)新建generateToken.html,在页面上显示token的值





(2) 获取Portal自身的基本信息

1)新建模块getPortalInfo.js,按照Portal API的文档目录构建目录,放置模块。

2)新建getPortalInfo.html页面

第一个练习完成后,这个练习完成起来就会比较简单,同样是再调一次接口,只不过接口地址不同,参数不同而已,流程上都是一样的。

(3) 获取用户、组织、群组、item信息

这里仅以item为例。[当然涉及item的增删改查操作完全可以在一个模块里面编写,比如itemOperation.js ,里面有item的增删改查方法。]

1)新建模块getItemInfo.js

2)新建getItemInfo.html页面

(4) Portal中新建一个文件夹

涉及文件夹的增删改查操作完全可以在一个模块里面编写,比如folderOperation.js ,里面有文件夹的增删改查方法。

1)新建模块folderOperation.js



2)新建createFolder.html页面

(5) 综合案例-新闻管理

· 新闻管理的功能(主要是4个):

· 新闻列表

· 增加新闻

· 删除新闻

· 更新新闻(这个留个大家实践)

· 当然还有新闻详情,这个可以自己扩展

· 思路:

· 把新闻当做item存到Portal中去

· 涉及到的接口:

· Search

· Add Item

· Delete Item

· Update Item
 
 
=========================================
代码下载:

0 个评论

要回复文章请先登录注册