Openlayers 2,为 Geometry/Feature 指定 DOM Id?

Openlayers 2, specifying DOM Id for a Geometry/Feature?

有什么方法可以 specify/set OpenLayers Geometry Point 对象的 DOM Id,即将其命名为 "myID" 而不是 "OpenLayers_Geometry_Point_nnn"?

据我所知,在Openlayers 2.13中,创建一个OpenLayers.Geometry.Point对象不接受任何形式的DOMid属性,而是通过`[=24=创建自己唯一的ID ]. OpenLayers.Geometry.Point.initialize 'constructor' 只接受 X 和 Y 值,不接受附加信息。

我真的很想使用 Selenium 来 verify/manipulate 某些对象在地图上,并且具有可预测的 DOM ID 似乎是最好的方法。

我实现的一个 "solution" 是在创建要测试的对象时替换 OpenLayers.Util.createUniqueID

// 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;

另一种可能是以某种方式替换OpenLayers.Geometry.initialize