leaflet要素图层根据属性渲染图形

要素图层根据每个图形的其中一个属性的值来渲染图形。

在这里插入图片描述

//渲染图层样式用setStyle(), 这里可以传入函数,函数的参数feature就是每一个要素(图形)
layer.setStyle(function(feature) {
	//获取属性 "FEATUREID" 的值
	var featureId = feature.properties["FEATUREID"];
	if(featureId){
		//featureSymbols中有当前featureId值的样式时,直接返回样式
		if(featureSymbols[featureId]){
			return featureSymbols[featureId];
		}else{
			/* 当featureId 不存在于featureCode中时,才去调用featureStyleByFeatureID方法;
			 * 否则,说明featureId已经在后台查询过了,并且没有查询到样式,所以这个featureId,不再调用featureStyleByFeatureID
			 * */
			if(featureCode[featureId]==null){
				featureStyleByFeatureID(featureId);
			}
			return featureSymbols[featureId];
		}
	}
});

/**
 * 根据FEATUREID属性的值,设置图层的样式
 * */
var featureSymbols = {};//存储样式
var featureCode = {};	//存储没有查询到样式的featureId,下次再遇到这个featureId时就不再去后台查询
function featureStyleByFeatureID(featureId) {
	//根据featureId去后台查询样式
	$.ajax({
		url:ctx+"/features/getFeaturresByCode",
		data:{ code : featureId},
		dataType:"json",
		async:false,
		success:function(data){
			//data样式是json格式的,例如:{color: "#ff0000", fillColor: "#ff0000", fillOpacity: "0", opacity: "1", type: 3, weight: "1"}
			//当data没有值时,将当前featureId值存储到featureCode中
			if(data==null || data =='{}'){
				featureCode[featureId] = featureId;
			}
			//样式以键值对的形式存储到featureSymbols中,下次再遇到这个featureId值,可以直接在featureSymbols中获取对应的样式,不再去后台查询
			featureSymbols[featureId] = data;
		}
	});
	return featureSymbols[featureId];
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

符华-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值