ใช้งาน Attribute replacement สำหรับ Vector layer ใน OpenLayers

Standard

ลองหาวิธีนั้นนี่ มาตั้งนานว่า จะทำงานอย่างไรในการใช้งาน Attribute replacement

ใน Doc บอกง่าย ๆ

var defaultStyle = new OpenLayers.Style({
‘pointRadius’: 10,
‘externalGraphic’: ‘${thumbnail}’
});

เวลาทำการทสร้าง Style ใช้แบบข้างบนไม่มีปัญหา แต่หากต้อง modified ค่าระหว่างทาง หรือ vector นี้ใช้กับ หลายชนิด ชั้น ข้อมูละก็จะมีปัญหา

มาเจอ link ข้างล่างมีประโยชน์ ในการใช้ context

new OpenLayers.Style({
fillColor: ‘blue’,
strokeColor: ‘navy’,
strokeWidth: 3,
pointRadius: 9,
fillOpacity: 0.6,
strokeOpacity: 0.75,
label: ‘${label}’,
fontColor: “black”,
fontFamily: “Arial”,
fontSize: 11
},
{
context: {
label:function(feature) {
if(feature.attributes['p_name']) {
return feature.attributes.p_name;
} else {
return ”;
}
}
}
});

จึงเจอทางออก

http://gis.stackexchange.com/questions/70299/provide-an-alternative-label-when-styling-vector-layer-with-openlayers