arcgis js api前端完成面积测算
2015-07-02 16:24
465 查看
想找一个不依赖GeometryService量算面积的方法,经过别人的帮助,终于在js帮助页上找到了。就是esri/geometry/geodesicUtils中的geodesicAreas方法,该方法通过Geometry获取其面积,在geodesicUtils还有一个获取几何要素长度的方法,geodesicLengths,可以用来获取长度。
当然,在使用这些方法之前,有些需要将Geometry转换一下投影,可以使用Geometry下的webMercatorUtils,在其中有webMercatorToGeographic(geometry)和geographicToWebMercator(geometry)这两个方法。不然,转出来的面积长度有可能是不对的。
下面是我做的一个例子,结合了draw这个方法:
画线和画面:
function measureLenght() {
toolbar.activate(esri.toolbars.Draw.POLYLINE);
}
function measureArea() {
toolbar.activate(esri.toolbars.Draw.POLYGON);
}
在地图初始化的时候添加监听画图的事件:
dojo.connect(toolbar, "onDrawEnd", GetLenthorArea);
量算面积和长度方法:
function GetLenthorArea(geometry) {//画图完毕后计算距离或者面积
if (geometry.type == "polyline") {
var geo = esri.geometry.webMercatorToGeographic(geometry);
var Length = esri.geometry.geodesicLengths([geo], esri.Units.METERS);
Map.infoWindow.setContent("距离:" + Length+ "米");
Map.infoWindow.show();
}
else if(geometry.type == "polygon") {
var geo = esri.geometry.webMercatorToGeographic(geometry);
var Area = esri.geometry.geodesicAreas([geo], esri.Units.SQUARE_METERS);
Map.infoWindow.setContent("面积:" + Area + "平方米");
Map.infoWindow.show();
}
}
最后,别忘了添加引用
当然,在使用这些方法之前,有些需要将Geometry转换一下投影,可以使用Geometry下的webMercatorUtils,在其中有webMercatorToGeographic(geometry)和geographicToWebMercator(geometry)这两个方法。不然,转出来的面积长度有可能是不对的。
下面是我做的一个例子,结合了draw这个方法:
画线和画面:
function measureLenght() {
toolbar.activate(esri.toolbars.Draw.POLYLINE);
}
function measureArea() {
toolbar.activate(esri.toolbars.Draw.POLYGON);
}
在地图初始化的时候添加监听画图的事件:
dojo.connect(toolbar, "onDrawEnd", GetLenthorArea);
量算面积和长度方法:
function GetLenthorArea(geometry) {//画图完毕后计算距离或者面积
if (geometry.type == "polyline") {
var geo = esri.geometry.webMercatorToGeographic(geometry);
var Length = esri.geometry.geodesicLengths([geo], esri.Units.METERS);
Map.infoWindow.setContent("距离:" + Length+ "米");
Map.infoWindow.show();
}
else if(geometry.type == "polygon") {
var geo = esri.geometry.webMercatorToGeographic(geometry);
var Area = esri.geometry.geodesicAreas([geo], esri.Units.SQUARE_METERS);
Map.infoWindow.setContent("面积:" + Area + "平方米");
Map.infoWindow.show();
}
}
最后,别忘了添加引用
相关文章推荐
- 边走边学Nodejs (基础入门篇)
- javascript之scrollTop
- JSP页面上显示XML信息(库里读出)
- buffer设计
- Html5的CSS3的transition实现简单动画效果
- JS获取用户屏幕信息
- html 、jsp笔记
- css3 gradient 详解
- 博客园自定义设计(三)用css3自定义标签样式
- JS location对象
- jquery删除数组中重复元素
- table表格某一td内容太多导致样式混乱的解决方案
- jstree使用小结(三)
- Creating HTML table with vertically oriented text as table header 表头文字方向
- Alsa period_size/periods/buffer_size计算逻辑
- .Net 与 Javascript 混合编程系列(如何穿透.net 和 js 的边界)
- CSS3 禁用文本复制的属性:user-select
- CSS3 禁用文本复制的属性:user-select
- [js开源组件开发]table表格组件
- 201507020721_《Javascript权威指南(第六版)——OO:集合类和枚举类、标准转化方法》(P217-225)