1

在将特征添加到矢量图层后,我尝试直接获取最新的特征 ID(例如“OpenLayers_Feature_Vector_86”)。

我试图添加一个事件监听器:

eventListeners: {
 "featuresadded": function(feature) {
   alert(feature.fid);
  }
}

该功能添加了以下代码:

vectors.addFeatures(geojson_format.read(featurecollection));

在此先感谢弗洛里安

4

1 回答 1

2

featuresadded(注意复数形式)传递添加的整个功能数组(即使它是单个功能,它仍然包装在一个数组中),在您的示例中,您试图访问一个fid功能数组的属性,该属性返回undefined. 您应该:

  1. 监听featureadded事件(单数形式):

    传递给侦听器的事件对象将具有一个特性属性,其中包含对添加的特性的引用。

  2. 提取featuresadded处理程序内部的相关特征,即:

featuresadded: function(features) {
  var lastFeature = features[features.length - 1];
  var lastFeatureId = lastFeature.id;
}

作为一般提示:我建议使用console.log而不是alert用于调试,它显示对象的所有属性,使您能够检查它(在这种情况下:看到 ID 属性被称为id,而不是fid)。警报将对象强制为字符串,通常显示一些无用的内容,例如[object Object]

于 2013-08-12T11:27:49.733 回答