TerraExplorer 6.6 for JavaScript 通过图层获取地理要素,获取图层属性信息,矢量标注等通用方法

来源:互联网 发布:淘宝fake鞋店 编辑:程序博客网 时间:2024/05/24 04:17
/** * 根据要素属性字段设置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.GeometryTypecase 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.GeometryTypecase 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;}

获取了相关属性之后,将名称属性对应的字段来对地理要素进行矢量标注,效果图如下:


阅读全文
1 0
原创粉丝点击