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
有什么方法可以 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