GIS 测距离操作

开发工具与关键技术: SuperMap iDesktop 9D   GIS
作者:杨泽平
撰写时间:2020、5、20

GIS测距离是通过调用发布在isever服务器上的地图进行的基础操作,他主要是根据地图比例尺在地图中取一个点绘制一条线再通过计算得出他的实际距离,这主要方便得出两地之间的实际距离。
详细步骤是,首先新建矢量图层,定义画线的样式,代码如下

//新建线矢量图层
lineLayer = new SuperMap.Layer.Vector("lineLayer");/*测距离*/
 //对线图层应用样式style
 lineLayer.style = style; (样式定义代码如下图)

GIS 测距离操作_第1张图片
然后是创建图层,代码如下

 //创建画线控制,图层是lineLayer;这里DrawFeature(图层,类型,属性);	multi:true在将	要素放入图层之前	是否现将其放入几何图层中
 drawLine = new SuperMap.Control.DrawFeature(lineLayer, SuperMap.Handler.Path, { multi: true });
 drawLine.events.on({ "featureadded": drawCompleted });//监听

接着是初始化控件,将控件添加到地图上,代码如下

 map = new SuperMap.Map("map", {
  controls: [
  new SuperMap.Control.LayerSwitcher(),/*图层选择控件类*/
  new SuperMap.Control.ScaleLine(),/*比例尺控件*/
  new SuperMap.Control.PanZoomBar(),/*缩放类*/
 new SuperMap.Control.Navigation({/*此控件处理伴随鼠标事件(拖拽,双击、鼠标滚轮缩放)的地图浏览*/
      dragPanOptions: {
          enableKinetic: true
      }
   }),
   drawLine]
});

再将绘制的图层加载到底图上,代码如下

 function distanceMeasure() {
  clearFeatures();
  drawLine.activate();
 }

然后是绘完触发事件,这个方法是将量算的参数传到服务端,并获取服务端返回的结果,然后通过弹窗显示出来。详情代码如下

  function drawCompleted(drawGeometryArgs) {
 //停止画面控制
 drawLine.deactivate();
 //获得图层几何对象
 var geometry = drawGeometryArgs.feature.geometry,
 measureParam = new SuperMap.REST.MeasureParameters(geometry), /* MeasureParameters:量算参数类。 客户端要量算的地物间的距离或某个区域的面积*/
 myMeasuerService = new SuperMap.REST.MeasureService(url); //量算服务类,该类负责将量算参数传递到服务端,并获取服务端返回的量算结果
 myMeasuerService.events.on({ "processCompleted": measureCompleted });

 //对MeasureService类型进行判断和赋值,当判断出是LineString时设置MeasureMode.DISTANCE,否则是MeasureMode.AREA

 myMeasuerService.measureMode = SuperMap.REST.MeasureMode.DISTANCE;

 myMeasuerService.processAsync(measureParam); //processAsync负责将客户端的量算参数传递到服务端。
}

最后是测量结束调用事件

function measureCompleted(measureEventArgs) {
var distance = measureEventArgs.result.distance;
var unit = measureEventArgs.result.unit;
alert("量算结果:" + distance + "米");
}

方法写完后测试效果,先点击绘图工具,然后在地图上选取一个点,点击鼠标左键拖动鼠标进行绘制你想要的线路,绘制完双击鼠标左键就可以得出测量结果,效果如下图:(注意这里不是只能固定两点之间画一条直线,你可以连多个点,在连第二个点的时候点击鼠标左键一下再继续拖动鼠标绘制线连接,不管多少个点都是这样,最后在终点双击结束绘画就可以了)

GIS 测距离操作_第2张图片

你可能感兴趣的:(GIS,gis)