gis api for js 框选区域取面积 以及 取重叠区域面积
2016-07-08 11:23
846 查看
function queryBySpatial(querySign, qrylyrname, outFields, queryTaskErrorHandler, isUseBuffer, distance) {
var TotalArea = 0;//总面积
var graphic_fw; //选择的区域
var intersecthic = map.extent; //选择的区域与同一组元素交集的区域
clearQueryInfos();
queryTask = new esri.tasks.QueryTask(getQueryUrl(qrylyrname));
queryTask.on("complete", function (queryResult) {
var features = queryResult.featureSet.features;
rExtent = null;
dojo.forEach(features, function (feature) {
intersecthic = graphic_fw.getExtent().intersects(feature.geometry.getExtent());//取交叉的extent
var selectionPolygon = esri.geometry.Polygon.fromExtent(intersecthic);//将交叉的extent转换成polygon
//拿到交叉区域-计算交叉的面积
try {
var areaParams = new esri.tasks.AreasAndLengthsParameters();
areaParams.lengthUnit = esri.tasks.GeometryService.UNIT_METER;
areaParams.areaUnit = esri.tasks.GeometryService.UNIT_SQ_METERS;
geometrySvc.simplify([selectionPolygon], function (simplifiedGeometries) {
areaParams.polygons = simplifiedGeometries;
geometrySvc.areasAndLengths(areaParams, function(result1) {
alert(result1.areas[0] + "sss");
}, function(err) {
alert(err);
}
);
}, function(err1) {
alert(err1);
});
////////////////////////////////////
} catch(e) {
alert(e.name + ": " + e.message);
}
//、、、、、、、、、、、、、、、、、、、、、、、、
});
alert(TotalArea);
MyLoading(false);
map.setExtent(rExtent);
});
queryTask.on("error", queryTaskErrorHandler);
//测量面积
if (tempArea == 1) {
macHandler = dojo.connect(geometrySvc, "onAreasAndLengthsComplete", function (result) {
TotalArea = result.areas[0];
//alert(TotalArea);
clearEvents();
});
maDrawCompletedHandler = dojo.connect(drawToolbar, "onDrawEnd", function (geometry) {
graphic = measureGraphicLyr.add(new esri.Graphic(geometry, new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_DASHDOT, new dojo.Color([255, 0, 0]), 2), new
dojo.Color([255, 255, 0, 0.25]))));
var areaParams = new esri.tasks.AreasAndLengthsParameters();
areaParams.lengthUnit = esri.tasks.GeometryService.UNIT_METER;
areaParams.areaUnit = esri.tasks.GeometryService.UNIT_SQ_METERS;
geometrySvc.simplify([geometry], function (simplifiedGeometries) {
areaParams.polygons = simplifiedGeometries;
geometrySvc.areasAndLengths(areaParams);
});
});
}
drawToolbar.activate(esri.toolbars.Draw.POLYGON);
tempArea++;
/////////////
queryDrawCompletedHandler = dojo.connect(drawToolbar, "onDrawEnd", function (geometry) {
//closeqPopup();
clearQueryGraphics();
if (!isUseBuffer) {
graphic_fw = geometry;//拿到选择的范围
var spatialRelationship = esri.tasks.Query.SPATIAL_REL_INTERSECTS;
var symbol = getSymbol(geometry.type);
var graphic = new esri.Graphic(geometry, symbol);
addGraphic(queryGraphicLyr, graphic);//空间查询绘制完成后不绘制框选范围
var query = buildQueryGraphicParameters(graphic, spatialRelationship, outFields);
MyLoading(true);
queryTask.execute(query);
return;
} else {
var params = buildBufferParameters(distance, geometry);
geometrySvc.buffer(params, bufferSuc);
}
});
drawToolbar.deactivate();
switch (querySign) {
case "dx": //点选
drawToolbar.activate(esri.toolbars.Draw.POINT);
break;
case "jxx": //矩形选
drawToolbar.activate(esri.toolbars.Draw.RECTANGLE);
break;
case "yxx": //圆形选
drawToolbar.activate(esri.toolbars.Draw.CIRCLE);
break;
case "dbxx": //多边形选
drawToolbar.activate(esri.toolbars.Draw.POLYGON);
break;
default:
break;
}
return true;
}
var TotalArea = 0;//总面积
var graphic_fw; //选择的区域
var intersecthic = map.extent; //选择的区域与同一组元素交集的区域
clearQueryInfos();
queryTask = new esri.tasks.QueryTask(getQueryUrl(qrylyrname));
queryTask.on("complete", function (queryResult) {
var features = queryResult.featureSet.features;
rExtent = null;
dojo.forEach(features, function (feature) {
intersecthic = graphic_fw.getExtent().intersects(feature.geometry.getExtent());//取交叉的extent
var selectionPolygon = esri.geometry.Polygon.fromExtent(intersecthic);//将交叉的extent转换成polygon
//拿到交叉区域-计算交叉的面积
try {
var areaParams = new esri.tasks.AreasAndLengthsParameters();
areaParams.lengthUnit = esri.tasks.GeometryService.UNIT_METER;
areaParams.areaUnit = esri.tasks.GeometryService.UNIT_SQ_METERS;
geometrySvc.simplify([selectionPolygon], function (simplifiedGeometries) {
areaParams.polygons = simplifiedGeometries;
geometrySvc.areasAndLengths(areaParams, function(result1) {
alert(result1.areas[0] + "sss");
}, function(err) {
alert(err);
}
);
}, function(err1) {
alert(err1);
});
////////////////////////////////////
} catch(e) {
alert(e.name + ": " + e.message);
}
//、、、、、、、、、、、、、、、、、、、、、、、、
});
alert(TotalArea);
MyLoading(false);
map.setExtent(rExtent);
});
queryTask.on("error", queryTaskErrorHandler);
//测量面积
if (tempArea == 1) {
macHandler = dojo.connect(geometrySvc, "onAreasAndLengthsComplete", function (result) {
TotalArea = result.areas[0];
//alert(TotalArea);
clearEvents();
});
maDrawCompletedHandler = dojo.connect(drawToolbar, "onDrawEnd", function (geometry) {
graphic = measureGraphicLyr.add(new esri.Graphic(geometry, new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_DASHDOT, new dojo.Color([255, 0, 0]), 2), new
dojo.Color([255, 255, 0, 0.25]))));
var areaParams = new esri.tasks.AreasAndLengthsParameters();
areaParams.lengthUnit = esri.tasks.GeometryService.UNIT_METER;
areaParams.areaUnit = esri.tasks.GeometryService.UNIT_SQ_METERS;
geometrySvc.simplify([geometry], function (simplifiedGeometries) {
areaParams.polygons = simplifiedGeometries;
geometrySvc.areasAndLengths(areaParams);
});
});
}
drawToolbar.activate(esri.toolbars.Draw.POLYGON);
tempArea++;
/////////////
queryDrawCompletedHandler = dojo.connect(drawToolbar, "onDrawEnd", function (geometry) {
//closeqPopup();
clearQueryGraphics();
if (!isUseBuffer) {
graphic_fw = geometry;//拿到选择的范围
var spatialRelationship = esri.tasks.Query.SPATIAL_REL_INTERSECTS;
var symbol = getSymbol(geometry.type);
var graphic = new esri.Graphic(geometry, symbol);
addGraphic(queryGraphicLyr, graphic);//空间查询绘制完成后不绘制框选范围
var query = buildQueryGraphicParameters(graphic, spatialRelationship, outFields);
MyLoading(true);
queryTask.execute(query);
return;
} else {
var params = buildBufferParameters(distance, geometry);
geometrySvc.buffer(params, bufferSuc);
}
});
drawToolbar.deactivate();
switch (querySign) {
case "dx": //点选
drawToolbar.activate(esri.toolbars.Draw.POINT);
break;
case "jxx": //矩形选
drawToolbar.activate(esri.toolbars.Draw.RECTANGLE);
break;
case "yxx": //圆形选
drawToolbar.activate(esri.toolbars.Draw.CIRCLE);
break;
case "dbxx": //多边形选
drawToolbar.activate(esri.toolbars.Draw.POLYGON);
break;
default:
break;
}
return true;
}
相关文章推荐
- JS添加删除DIV的简单实例
- IDEA中通过Map返回JSON字符串
- js操作DOM--添加、删除节点的简单实例
- 【bzoj4327】【JSOI2012】【玄武密码】【AC自动机】
- js日期格式化
- js for循环高性能高逼格细节分析
- 直观理解js自执行函数
- 简单封装js的dom查询实例代码
- JSP+Servlet实现上传下载
- JS选取DOM元素的简单方法
- href="#" href="javascript:void(0);" href="###"
- js中替换字符串
- js常用正则表达式
- table根据表格内的元素改变行颜色的javascript实现
- md5.js 插件
- Jsp c标签数值格式化
- [置顶] CraftyJs初探
- EXTJs前后台交互 常用哦3种方式
- js事件执行顺序
- CSS+JS滚动图片功能代码