2015-08-04 1 views
2

Est-il possible de spécifier/définir l'ID DOM d'un objet Point de géométrie OpenLayers, c'est-à-dire l'appeler "myID" au lieu de "OpenLayers_Geometry_Point_nnn"? Pour autant que je sache, dans Openlayers 2.13, la création d'un objet OpenLayers.Geometry.Point n'accepte aucune forme d'attribut DOM, et crée son propre identifiant unique via `OpenLayers.Util.createUniqueID. Le 'constructeur' OpenLayers.Geometry.Point.initialize accepte uniquement les valeurs X et Y, pas d'informations supplémentaires. Je voudrais vraiment utiliser Selenium pour vérifier/manipuler certains objets sur une carte, et avoir des DOM Ids prévisibles semble être le meilleur moyen de le faire.Openlayers 2, en spécifiant DOM Id pour une géométrie/fonctionnalité?

Répondre

0

Une "solution" que j'ai implémentée est de remplacer OpenLayers.Util.createUniqueID pendant que je crée les objets que je souhaite tester.

// replace OpenLayer Dom ID generation for this layer 
var olPrefix = "MyPrefix"; 
var olCount = 0; 
var old = OpenLayers.Util.createUniqueID; 
OpenLayers.Util.createUniqueID = function(prefix) { 
    if (prefix.search('^OpenLayers.Geometry') >= 0) { 
    // special Dom IDs for Geometry nodes only... 
    olCount++; 
    return olPrefix + "_" + olCount; 
    } 
    // default to using the previous ID generator... 
    return(old(prefix)); 
} 

var geoJSON = { 
    "type": "FeatureCollection", 
    "features": [ 
     { 
      "type":"Feature", 
      "geometry": { "type":"Point","coordinates":[ 1.0, 52.0]}, 
      "properties":{ "myProperty":"myValue" } 
     }, 
     // more features here 
    ] 
}; 

var geoformat = new OpenLayers.Format.GeoJSON(); 
var features = geoformat.read(geoJSON); 

// finished creating your features, so put the "old" ID routine back... 
OpenLayers.Util.createUniqueID = old; 

Une autre possibilité est de remplacer OpenLayers.Geometry.initialize d'une certaine façon