drawGeometry: function(geometry, style, featureId) {
var rendered = false;
if (geometry instanceof OpenLayers.Geometry.Point) {
var node = document.getElementById(featureId);
if (node) {
if (style.display != "none") {
var resolution = this.getResolution();
var x = (geometry.x / resolution + this.left);
var y = (this.top - geometry.y / resolution);
node.style.left = parseInt(x) + "px";
node.style.top = parseInt(y) + "px";
rendered = true;
}
} else {
if (style.display == "none") { return rendered; }
node = document.createElement("a");
node.setAttribute('href', '#');
node.id = featureId;
node._featureId = featureId;
if (style.cssClass === 'cluster') {
var len = ("" + style.label).length;
node.className = style.cssClass + " cluster-" + len;
} else {
node.className = style.cssClass;
}
var resolution = this.getResolution();
var x = (geometry.x / resolution + this.left);
var y = (this.top - geometry.y / resolution);
var idx = node.id.substr(node.id.lastIndexOf('_')+1, node.id.length);
// TODO see if there is no cleaner way to differentiate
if (style.cssClass === 'cluster') {
node.innerHTML = '<span>'+idx+'</span>';
} else {
node.innerHTML = idx;
}
node.style.left = parseInt(x) + "px";
node.style.top = parseInt(y) + "px";
this.root.appendChild(node);
rendered = true;
}
if (rendered == false) {
this.root.removeChild(node);
}
return rendered;
}
}