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

/**
 * 根据要素属性字段设置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;
}

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


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值