TerraExplorer 6.6 for JavaScript 通过图层获取地理要素,获取图层属性信息,矢量标注等通用方法
2017-09-12 15:55
731 查看
/** * 根据要素属性字段设置label * * */ function SetTextLabel(layerName){ var features; var groupID = sgworld.ProjectTree.FindItem(layerName); //获取要素图层信息 var featureLayer = sgworld.ProjectTree.GetLayer(groupID); featureLayer.Streaming=false; featureLayer.Load(); //获取图层中的要素集合 var featureGroups = featureLayer.FeatureGroups; console.log("要素几何模型:"+featureLayer.GeometryType); switch (featureGroups(0).GeometryType) {//或者更改为featureLayer.GeometryType case 0: featureGroups.Point.DisplayAs = 10; features = featureGroups.Point.GetCurrentFeatures(); break;// 圆柱 case 1: featureGroups.Polyline.DisplayAs = 1; features = featureGroups.Polyline.GetCurrentFeatures(); break;// 线 case 2: featureGroups.Polygon.DisplayAs = 6; features = featureGroups.Polygon.GetCurrentFeatures(); break; } // featureGroups.Polygon.DisplayAs = 6;//4(regular polygon).6(3d polygon)7(building) var attributes = featureLayer.DataSourceInfo.Attributes; attributes.ImportAll = true; // var features = featureGroups.Polygon.GetCurrentFeatures();//.polygon.Features; alert("feature总数:" + features.Count); for ( var a = 0; a < features.Count; a++) { var label=""; var feature = features.Item(a); var point = getXYCoordfromFeat(feature); for ( var j = 0; j < feature.FeatureAttributes.Count; j++) {//attributes 18 /*var featureAttribute = feature.FeatureAttributes.Item(j); strResult = strResult + "<td>" + featureAttribute.Name + "*" + featureAttribute.Value + "</td>"; strResult = strResult + "</tr>";*/ var name=feature.FeatureAttributes.Item(j).Name; if (name.indexOf("名称")!=-1){ label=name; break; } } try{ var labelName = feature.FeatureAttributes.GetFeatureAttribute(label).Value; }catch(err){ console.log("未找到相关属性字段:"+err.description); labelName=""; } if (labelName!=null) CreateTextLabel(point["x"], point["y"], labelName,layerName); } } //通过图层获取属性 function getAttrFromLayer(layerName){ var lFeatures=getFeatureFromLayer(layerName); // var attributes = featureLayer.DataSourceInfo.Attributes; // attributes.ImportAll = true; for (var i=0;i<lFeatures.Count;i++){ var feature=lFeatures.Item(i); var attrj='"'+i+'":['; for(var j=0 ;j<feature.FeatureAttributes.Count;j++){ var featureAttribute = feature.FeatureAttributes.Item(j); attrj = attrj + '"' + featureAttribute.Name + '":' + featureAttribute.Value + ","; if(j=feature.FeatureAttributes.Count-1) attrj=attrj + '"' + featureAttribute.Name + '":'+ featureAttribute.Value + ""; attrj=attrj+'{'+attrj+'},'; } attrj=attrj+'],'; if(i=lFeatures.Count-1) attrj=attrj+']';//最后一个逗号要去掉 } return '{'+attrj+'}';//返回json格式还要修改。 } function getFeatureFromLayer(layerName){ var groupID = sgworld.ProjectTree.FindItem(layerName); //获取要素图层信息 var featureLayer = sgworld.ProjectTree.GetLayer(groupID); featureLayer.Streaming=false; featureLayer.Load(); //获取图层中的要素集合 var featureGroups = featureLayer.FeatureGroups; switch (featureGroups(0).GeometryType) {//或者更改为featureLayer.GeometryType case 0: featureGroups.Point.DisplayAs = 10; var features = featureGroups.Point.GetCurrentFeatures(); break;// 圆柱 case 1: featureGroups.Polyline.DisplayAs = 1; var features = featureGroups.Polyline.GetCurrentFeatures(); break;// 线 case 2: featureGroups.Polygon.DisplayAs = 6; var features = featureGroups.Polygon.GetCurrentFeatures(); break; } return features; }
获取了相关属性之后,将名称属性对应的字段来对地理要素进行矢量标注,效果图如下:
相关文章推荐
- terraExplorer 6.6 for javascript 获取地理要素上的坐标值,通过图层设置标注(作为上一篇的补充)
- TerraExplorer 6.6 api for javaScript 中的Points无法获取该对象的属性和使用其所持有方法
- 定义通用的可通过lambda表达式树来获取属性信息
- javascript通过获取html标签属性class实现多选项卡的方法
- ArcGIS API For Javascript之编辑服务器端图层(通过要素服务feature进行增删改查 )
- 基于Skyline的TerraExplorer6.1.1如何通过二次开发实现矢量图层的空间查询和属性查询
- 通过反射获取构造方法,属性,方法信息
- 反射(2)—通过反射获取属性方法等信息
- javascript通过获取html标签属性class实现多选项卡的方法
- 定义通用的可通过lambda表达式树来获取属性信息
- Javascript通过腾讯,新浪,谷歌 IP接口获取地理位置信息
- 通过反射获取街道这个类的所有属性、所有方法信息
- 通过XmlNodeType.ProcessingInstruction属性获取到InfoPath XML文件头信息
- [Javascript]xmlhttp的对象方法属性,用for x in obj的方法得到
- c# 获取电脑硬件信息通用查询类[测试通过]
- 在Silverlight中通过WCF和ArcGIS SDE获取图层中的属性和要素List
- MaxMind GeoIP --- 通过IP地址获取地理信息
- javascript通过文件头信息获取图片宽高
- Android 通过经纬度获取地理位置信息
- javascript:模拟类私有属性,通过类方法调用例子