openlayer 加载矢量图层设置文字标注

自定义图层样式加载矢量图层,设置图层文字标注。

function addVectorTileLayer(workspace,mapName){
	var layerStyle = new ol.style.Style({
		fill:new ol.style.Fill({color:'#fff'}),
		stroke:new ol.style.Stroke({
			color:'#000000',
			width:1
		}),
		text: new ol.style.Text({
			textBaseline: 'middle',
			rotateWithView:true,
	        // font: '14px Microsoft YaHei',
	    })
	});
		
   let url =_map.baseUrl+"/iserver/services/map-"+workspace+"/rest/maps/"+mapName;
   new ol.supermap.MapService(url).getMapInfo(function (serviceResult) {
	   //矢量瓦片风格参数对象 
		/* let vectorTileStyles = new ol.supermap.VectorTileStyles({
			  url: url, 
			  view: _map.getView() 
		  });*/
		 
		// 添加矢量瓦片图层
		let vectorLayer = new ol.layer.VectorTile({
			// 通过地图信息获取瓦片参数对象
			source: new ol.source.VectorTileSuperMapRest(ol.source.VectorTileSuperMapRest.optionsFromMapJSON(url, serviceResult.result)),
			declutter:true,//防止标注文字重复标注
			style: function (feature) {
				
				let name = feature.values_.layerName;
				name = name.substr(0,name.indexOf('@'));
				let info = map.getLayerInfo({layerName:name});
				let lableName = (info == undefined)?'': info.lable_name;
	            let text = feature.values_.attributes[lableName] || '';
	            
	            if(text != ''){
	            	let place = info.geometry_type=='多段线'?'line':'point';
	            	layerStyle.getText().setPlacement(place).setText(text);
	            }
	            //if(info)layerStyle.setFill(new ol.style.Fill({color:info.fill_color}));
	            
	            return layerStyle;
	        },
			
		});
		_map.addLayer(vectorLayer);
	});
}

文字标注重复显示解决办法,设置declutter=true属性

new ol.layer.VectorTile({
			// 通过地图信息获取瓦片参数对象
			source: source,
			declutter:true,
			})
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值