前言
这个是
GIS
厂商在 ArcGIS API for JavaScript 和 一个Bootstrap主题,用于设计,样式化和创建现代地图应用程序 calcite-maps 两个开源框架的基础上,自行研发的一套应用。
由于源码中后端部分使用的是人家自行研发的引擎GISServer
,涉及到了商业机密,所以本篇文章下面所说的代码
均代表的是其中可分析的前端源码部分。
- 线上预览图
准备工作
- 首先是将源码下载到本地,注意:这里只提供公司内部的
svn
地址。
正文
1. 目录结构分析
arcgis_js_api
文件夹
这个文件夹其实存放的是 ArcGIS API for JavaScript 官方提供的
api
部分,相当于资源引用的地方,从官网改成了本地环境。
shandonggis_v2
文件夹
这个其实是需要我们这边随时与
GIS
厂商同步的代码备份,也就是说人家的代码有何变动,需要手动去将人家的所有代码复制过来(这里的复制操作,需要登录山东这边本地的云桌面才可以,具体细节就不再概述),进行一个全部替换的操作。
shandonggis_v3
文件夹
这个是为了满足我们这边的需求,在
shandonggis_v2
文件夹源码的基础上进行一些简单的定制化修改后的代码,也就是我们这边生产环境部署的代码。
shandonggis_v3 -> calcite-maps
文件夹
这个文件夹是 一个Bootstrap主题,用于设计,样式化和创建现代地图应用程序 calcite-maps 开源框架的源码部分。
shandonggis_v3 -> js
文件夹
这个文件夹中的config
部分主要是应用的配置;library
部分是自定义的可复用组件。
shandonggis_v3 -> jslib
文件夹
里面放的都是常用的第三方插件,例如jQuery
2. 主要的文件源码分析
1. shandonggis_v3 -> js -> config -> default.js
应用使用的配置文件
resFeatureLayers
属性
这个属性是图层的分类信息,小区、门店之类的
fieldInfos
属性是在页面显示图层详情时,需要展示的相应字段
renderFromServerConfig
属性表示的是,是否需要从服务器中取图层的数据
clientFeatureLayers
属性
初始加载的图层列表,分先后顺序:点图层须在面、线图层之后,使点图层在面图层的顶部,这里的文本和resFeatureLayers
属性中的是一一对应的,只是顺序可以随着自己的需求做调整。
shandongIPAddress
属性
山东自定义 IP 地址,判断环境返回本地和线上不同地址
2. shandonggis_v3 -> js -> library -> datang -> FeatureLayerLoader.js
应用初始化加载是使用的函数,应用大部分的逻辑都在这个文件中写的
loadFeatureLayer
函数
上图的是从服务端获取渲染信息和标注信息
的地方,页面上每个图层加载时都会使用该函数
上图是每个图层点击时的回调函数,内部使用到了下面要说的showResDetail
函数
showResDetail
函数
该函数主要负责拼接图层详情所需要的内容
这里我们这边定制了一个需求:如果地图上的图层点击时包含编号(是否转化的标识),请求我们这边的接口,没有的话使用地图默认的数据,如下图所示