《深圳市宝安区IGS系统》项目研发阶段性总结

作者:唐国铭
开发工具与关键技术:SuperMap iDesktop9D、iServer、Visual Studio 2015、Sql、.Net、C#
完成模块功能:区域定位、查询搜索、周边分析、最佳路径分析、图层显示器
一、功能实现
区域定位主要是对此地区街道的定位功能。
(1)区域定位:见图1,是区域定位模块实现界面。

在这里插入图片描述

                                                    图1 区域定位模块

点击左边区域定位下的街道,自动定位到此街道

在这里插入图片描述

													图2 街道定位

(2)查询搜索
查询搜索包括地址查询、公司企业查询、病例门诊号查询、卡片编号、项目登记号功能模块
见图3
在这里插入图片描述

													图3查询搜索

地址查询:输入详细地址点击查询,会自动定位到此地点并把地址信息弹出来,

在这里插入图片描述

													图4地址查询

公司企业:在输入框中可以精确的输入公司企业的名称进行查询,也可以输入公司企业的关键字进行模糊查询,模糊查询的的结果会一一列举出来。在列举出来的公司,找到你要的公司企业并单击,结果会在地图上进行定位出来。

在这里插入图片描述

														图5公司企业查询

病例门诊号查询、卡片编号查询、项目登记号差爱心:在输入框中,可以精确的输入患者的门诊号、卡片编号、项目登记号进行查询,也可以输入病例门诊号、卡片编号、项目登记号的关键字进行模糊查询,模糊的结果会在右边的侧边栏里显示,单击侧边栏中的任意结果 ,如果这病例门诊号、卡片编号或项目登记号没有被注销,则可以在地图上定位出位置。

在这里插入图片描述

												图6病例门诊号查询

(3)周边分析
周边分析包括定随意定一个点的分析查询,还有以某一医院、社康、药店、病例进行的周边查询
(其中原理一致)
在地图上选择一个中心点,这里默认半径为500,最大给了2000,查询目标默认查询药店和社康,查询目标最多只能选择6个,点击查询在此范围内所选的查询目标会显示出来,点击icon图标可查看详细信息

在这里插入图片描述

									图7.1周边分析:以某一点的查询

在这里插入图片描述

								图7.21周边分析:以某一医院、社康、药店、病例的查询

(4)最佳路径分析
在此之前先到SuperMap iDesktop9D里构建好二位网格,再进行拓扑处理测试好后进行编码,
操作:在地图上选取多个点,点击提交,可规划最佳路径

在这里插入图片描述

													图8最佳路径分析

(5)图层管理器
包括医院、社康、药店、病例等图层
鼠标移动到右侧方块图标,显示图层,点击打钩显示图层信息
在这里插入图片描述

												图9图层显示器

二、经典代码
简单创建图层信息

//1)	先声明参数新建点矢量图层
 //新建点矢量图层
var  BingLi1 = new SuperMap.Layer.Vector("病例分布散点图", { visibility: false });
//2)	往map中添加图层参数
function addLayer() {
            // 向Map中添加图层
            map.addLayers([
                layer,vectorLayer_WG,DingWei,markerLayers,vectorLayer,
                BingLi1, YaoDian, SheKang, YiYuan, QuanLayer, markerLayer
            ]);
            //显示地图
            map.setCenter(new SuperMap.LonLat(113.82245, 22.70002),1);
            map.setBaseLayer(layer);
        }
// 3)	创建要素选择控件并激活    
 //要素选择控件,该控件实现在指定的的图层上通过鼠标单击和悬浮选择矢量要素。
            selectFeature = new SuperMap.Control.SelectFeature([BingLi1, YiYuan, SheKang, YaoDian, QuanLayer, DingWei],
             { onSelect: onFeatureSelect, onUnselect: onUnFeatureSelect, repeat: true });
            //map上添加控件vectorLayergetMousePositionPx
            map.addControl(selectFeature);
            //激活控件
            selectFeature.activate();
 //4)	查询方法查询出信息并添加到图层
  //病例分布散点图层管理
        function BingLiSQL() {
            $.post("SelectPatientInfo", function (data) {
                processCompletedingBingli(data);
            })
        }
        //病例
        function processCompletedingBingli(queryEventArgs) {
            var i, feature, features = [];
            for (i = 0; i < queryEventArgs.length; i++) {
                var x = queryEventArgs[i].SmX;
                var y = queryEventArgs[i].SmY;
                var geometry = new SuperMap.Geometry.Point(x, y);
                feature = new SuperMap.Feature.Vector(geometry);
                feature.XCoordinate = x;
                feature.YCoordinate = y;
                feature.Address = queryEventArgs[i].Address;
                feature.PatientName = queryEventArgs[i].PatientName;
                feature.ProjectNumber = queryEventArgs[i].ProjectNumber;
                feature.MenNumber = queryEventArgs[i].MenNumber;
                feature.Sex = queryEventArgs[i].SonID;
                feature.Ages = queryEventArgs[i].Ages;
                feature.SheKangID = queryEventArgs[i].SheKangID;
                feature.style = BingliStyle;
                feature.int = 4;
                features.push(feature);
            }
            BingLi1.addFeatures(features);
        }
//5)	当图层要素被点击时调用此方法并显示弹框内容
 function onFeatureSelect(feature) {
  var contentHTML = "";
    if(feature.int == 4){
       //设置在气泡中显示的内容
                contentHTML += "<div> <span>项目登记号:" + feature.ProjectNumber + "</span></div>";
                contentHTML += "<div> <span>门诊号:" + feature.MenNumber + "</span></div>";
                contentHTML += "<div> <span>姓名:" + feature.PatientName + "</span></div>";
                contentHTML += "<div> <span>性别:" + Sex + "</span></div>";
                contentHTML += "<div> <span>年龄:" + feature.Ages + "</span></div>";
                contentHTML += "<div>家庭地址:" + feature.Address + "<br>"
                    + "<div>隶属社康:" + SheKangName + "</div><br>"
                    + "<div style='text-align:center;'><button value=" + T + " style='height:30px;width:75px;font-size:8px;'type='button' class='btn btn-primary'onclick=''>活动路径</button>"
                    + "<button value=" + T + " style='height:30px;width:75px;font-size:8px;'type='button' class='btn btn-primary'onclick='Checkboxs(this)'>"
                    + "周边查询</button><div/></div>";
    }
    //初始化一个弹出窗口,当某个地图要素被选中时会弹出此窗口,用来显示选中地图要素的属性信息
             popup = new SuperMap.Popup.FramedCloud("chicken",
             feature.geometry.getBounds().getCenterLonLat(),
             null,
             contentHTML,
             null,
             true,
             null,
             true);
             feature.popup = popup;
             map.addPopup(popup);
 }

四、开发总结
由于老师给到的资源中没有街道的面数据集,我就自己创建了一个面数据集,然后进行划线切割,往此切割后的数据集里添加一个属性字段NAME,把街道名称填上去,这样就完成了前备工作,接着就是编写查询。刚开始的时候因为没有原有的街道面数据集,我就把他做成了点的定位,后来发觉不符合要求和后面的查询搜索功能有重复性,只好自己准备数据集,,然后就是这个切割有时候真的很费时,因为学的不多,就进行练习,所以很多都不懂,都是通过查找各种辅助资料逐渐了解做的。不过通过这次练习,锻炼了自学能力。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值