added support for text labels. This also adds getCentroid methods to all
geometries. Thanks crschmidt for the great help with this patch, and thanks to camptocamp for the initial work on this and rcoup for creating the first patches. r=crschmidt (closes #1895) git-svn-id: http://svn.openlayers.org/trunk/openlayers@9262 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -43,7 +43,7 @@ OpenLayers.ElementsIndexer = OpenLayers.Class({
|
||||
* the Z_ORDER_DRAWING_ORDER comparison method.
|
||||
*/
|
||||
compare: null,
|
||||
|
||||
|
||||
/**
|
||||
* APIMethod: initialize
|
||||
* Create a new indexer with
|
||||
@@ -353,6 +353,24 @@ OpenLayers.Renderer.Elements = OpenLayers.Class(OpenLayers.Renderer, {
|
||||
*/
|
||||
rendererRoot: null,
|
||||
|
||||
/**
|
||||
* Property: root
|
||||
* {DOMElement}
|
||||
*/
|
||||
root: null,
|
||||
|
||||
/**
|
||||
* Property: vectorRoot
|
||||
* {DOMElement}
|
||||
*/
|
||||
vectorRoot: null,
|
||||
|
||||
/**
|
||||
* Property: textRoot
|
||||
* {DOMElement}
|
||||
*/
|
||||
textRoot: null,
|
||||
|
||||
/**
|
||||
* Property: xmlns
|
||||
* {String}
|
||||
@@ -373,6 +391,12 @@ OpenLayers.Renderer.Elements = OpenLayers.Class(OpenLayers.Renderer, {
|
||||
*/
|
||||
BACKGROUND_ID_SUFFIX: "_background",
|
||||
|
||||
/**
|
||||
* Constant: BACKGROUND_ID_SUFFIX
|
||||
* {String}
|
||||
*/
|
||||
LABEL_ID_SUFFIX: "_label",
|
||||
|
||||
/**
|
||||
* Property: minimumSymbolizer
|
||||
* {Object}
|
||||
@@ -399,7 +423,12 @@ OpenLayers.Renderer.Elements = OpenLayers.Class(OpenLayers.Renderer, {
|
||||
OpenLayers.Renderer.prototype.initialize.apply(this, arguments);
|
||||
|
||||
this.rendererRoot = this.createRenderRoot();
|
||||
this.root = this.createRoot();
|
||||
this.root = this.createRoot("_root");
|
||||
this.vectorRoot = this.createRoot("_vroot");
|
||||
this.textRoot = this.createRoot("_troot");
|
||||
|
||||
this.root.appendChild(this.vectorRoot);
|
||||
this.root.appendChild(this.textRoot);
|
||||
|
||||
this.rendererRoot.appendChild(this.root);
|
||||
this.container.appendChild(this.rendererRoot);
|
||||
@@ -428,9 +457,14 @@ OpenLayers.Renderer.Elements = OpenLayers.Class(OpenLayers.Renderer, {
|
||||
* Remove all the elements from the root
|
||||
*/
|
||||
clear: function() {
|
||||
if (this.root) {
|
||||
while (this.root.childNodes.length > 0) {
|
||||
this.root.removeChild(this.root.firstChild);
|
||||
if (this.vectorRoot) {
|
||||
while (this.vectorRoot.childNodes.length > 0) {
|
||||
this.vectorRoot.removeChild(this.vectorRoot.firstChild);
|
||||
}
|
||||
}
|
||||
if (this.textRoot) {
|
||||
while (this.textRoot.childNodes.length > 0) {
|
||||
this.textRoot.removeChild(this.textRoot.firstChild);
|
||||
}
|
||||
}
|
||||
if (this.indexer) {
|
||||
@@ -544,15 +578,15 @@ OpenLayers.Renderer.Elements = OpenLayers.Class(OpenLayers.Renderer, {
|
||||
if (this.indexer) {
|
||||
var insert = this.indexer.insert(node);
|
||||
if (insert) {
|
||||
this.root.insertBefore(node, insert);
|
||||
this.vectorRoot.insertBefore(node, insert);
|
||||
} else {
|
||||
this.root.appendChild(node);
|
||||
this.vectorRoot.appendChild(node);
|
||||
}
|
||||
} else {
|
||||
// if there's no indexer, simply append the node to root,
|
||||
// but only if the node is a new one
|
||||
if (node.parentNode !== this.root){
|
||||
this.root.appendChild(node);
|
||||
this.vectorRoot.appendChild(node);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -788,6 +822,20 @@ OpenLayers.Renderer.Elements = OpenLayers.Class(OpenLayers.Renderer, {
|
||||
*/
|
||||
drawSurface: function(node, geometry) {},
|
||||
|
||||
/**
|
||||
* Method: removeText
|
||||
* Removes a label
|
||||
*
|
||||
* Parameters:
|
||||
* featureId - {String}
|
||||
*/
|
||||
removeText: function(featureId) {
|
||||
var label = document.getElementById(featureId + this.LABEL_ID_SUFFIX);
|
||||
if (label) {
|
||||
this.textRoot.removeChild(label);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Method: getFeatureIdFromEvent
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user