《GIS ——“实现地点的分布图”》项目研发阶段性总结
作者:潘玉莹
本次任务完成时间:2018年1月10日~2018年1月15日
完成模块功能:显示某个地区全部医院分布图
开发工具与关键技术:
SuperMap iDesktop 9D
SuperMap_iserver
Visual Studio 2015
一、 功能实现
医院分布图包括——1地图的发布 2医院的查询 借鉴于SuperMan
第一步:首先在iDesktop里创建一幅地图,新创建一个数据源,并在数据源中加入地
图要素,即 (数据集)然后保存工作空间。图一所示:
并获取其中的数据信息:
数据库名称:工作空间的名称(即地图数据库表的名称)
用户名称、密码:数据库名称、数据库密码
工作空间名称:即保存地图时SmWorkspace表里的SmWorkspaceName名称
图二所示:
第二步:发布地图:启动并登陆iserver,iserver主要用于地图的发布并获取地图里
for JavaScript 的路径:图三所示:
成功发布地图后,在VS实现代码的查询
第三步:创建一个矢量图层(以医院为例),并加入到地图中。代码如下
//定义layer图层,TiledDynamicRESTLayer:分块动态 REST 图层
layer = new SuperMap.Layer.TiledDynamicRESTLayer("LuoHu_Data", url, {transparent: true, cacheEnabled: true }, { maxResolution: "auto" });
////创建图层对象
//为图层初始化完毕添加addLayer()事件 drawPolygon2
layer.events.on({"layerInitialized": addLayer})
Hospital = new SuperMap.Layer.Markers("医院分布图");
> Hospital.events.on({
> "loadend": Hospital.setVisibility(false),
> });
>
把创建的图层加入到地图中:代码如下
>
> function addLayer() {
> map.addLayers([Hospital]);
> map.setCenter(new SuperMap.LonLat(114.115281221379, 22.5380840324007), 0);//此为地图的中心点
> }
在地图加载事件里写一个加载事件,并调用此加载事件:如下图
成功调用第一个监听事件processHospital,失败则调用第二个监听事件processFailed
QueryParam:FilterParameter设置查询条件,name是必设的参数,(图层名称格式:数据集名称@数据源别名)
> queryByBoundsParams:queryParams查询过滤条件参数数组。bounds查询范围
> queryService:服务端传递参数,然后服务端返回对象
调用成功的监听事件写法:图四所示:
设置气泡显示医院的信息
注释的代码段意思是:获取属性表的数据判断
如果属性表的值等于1时,显示一种数据
则不同的值将会呈现不同的数据:图五所示:
编写完代码后就可以实现某个区域地点的查询:页面如下
勾选上右边的医院管理器可开启与关闭医院分布图;图六所示:
开发总结:
刚开始知道要学习GIS这门课程时,对GIS是一点都不了解,不清楚学这门主要是用来实现什么的,学习第一节课时,授课老师给我们讲了GIS理论知识,但还是懵懵懂懂,主要了解这门课程主要是以地理空间数据库为基础的。学习编程中总是很多很多的迷茫,跟不上,学不过来。但是只要自己慢慢认真去研究琢磨并去理解,相信总是可以克服。学习编程是需要一定的思维,所谓智商是最短的距离,只要付出时间付出精力总会有一定的回报。学习编程的时候我总会问自己为什么?问多了可能会理解个究竟出来。生活中其实很多事情都与我们学习编程有联系的,多想、多写总会有好处的。时刻相信自己!