Вы можете использовать feature.getId();
, чтобы получить его идентификатор, я забыл, если он автоматически создает его, если он не (возвращает неопределенное или нулевое), вы можете установить его.feature.setId();
, если я правильно помню.
Вы можете назначить его при создании.Сохраните его в глобальном значении, а затем снова используйте его с getFeatureByID (я не думаю, что функция вызывается именно так).
var feature = new ol.Feature({
geometry: new ol.geom.Point([0, 0]),
id: id
});
Если вам нужно сбросить несколько объектов.Вы можете играть со слоями (очистить все слои, а затем перерисовать их новыми элементами). Кстати: если я правильно помню, вы, возможно, делаете это правильно, однако вам придется перерисовывать слои после изменения некоторых элементов в нем, иначе он все равно будет помнить ту же геометрию. .
Таким образом, когда вы получаете свои идентификаторы, вы можете отправить их в глобальный массив, а затем повторно использовать его, чтобы вы знали, какой есть какой.
Сейчас я не уверен, что ваше событие нафункция (я предполагаю, что это ваша другая функция. Вы могли бы распечатать ее и посмотреть, если все готово есть идентификатор, чтобы использовать его.
Чтобы получить элемент, по определенному идентификатору, вы должны yourLayer.getFeatureById(featureID).getGeometry().getCoordinates());
Я проверил его в своем коде и, похоже, получил идентификатор по:
var vmarkf = new OpenLayers.Feature.Vector(coords, null, style);
vmarkf.id;
Так что я предполагаю, что он генерируется автоматически, и вам не нужно устанавливать его самостоятельно.
Я нашел эту функцию с помощью: layer.getFeatureById(vmarkf.id));
Некоторые люди говорят, что вам нужно установить ID самостоятельно, в моем случае это не так, но помните об этом.