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é?
2
A
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