2013-08-12 2 views
1

Я пытаюсь получить последний признак свойств (например, «OpenLayers_Feature_Vector_86») непосредственно после добавления функции в векторный слой.openlayers получают последнюю добавленную функцию на vectorlayer

Я пытался добавить EventListener:

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

Функция добавлена ​​с помощью следующего кода:

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

Заранее спасибо Флориан

ответ

2

featuresadded (обратите внимание на форму множественного числа) передает целый массив добавленных функций (даже если это единственная функция, она все еще обернута d в массиве), в вашем примере вы пытаетесь получить доступ к свойству fid массива функций, который возвращает undefined. Вы должны либо:

  1. Прослушайте featureadded событий (форма единственного числа):

    Объект события передается слушателям будет иметь свойство функции со ссылкой на дополнительной функции.

  2. Extract соответствующей функции внутри featuresadded обработчика, то есть:

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

Как общий совет: я бы рекомендовал использовать console.log вместо alert для отладки, он показывает все свойства объекта, позволяющие вам его проверить (в этом случае: см., что свойство ID называется id, а не fid). Alert принуждает объект к строке, часто отображая что-то бесполезное, как [object Object]

Смежные вопросы