您的位置:首页 > Web前端 > JavaScript

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;
}

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息