OpenLayers ol-debug.js предоставляет свойство ol.js - PullRequest
0 голосов
/ 12 декабря 2018

Я использую OpenLayers 4.1.1

У меня есть функция, написанная с использованием ol-debug.js

Моя цель - ввести первую координату вручную и просто нарисовать линейную строку.

ol.interaction.Draw.prototype.startDrawing_ = function (event) {
    var start = event.coordinate;
    this.finishCoordinate_ = start;
    if (1 == 1) {
        this.sketchCoords_ = [start.slice(), start.slice()];
    }
    console.log(this.sketchCoords_);
    var geometry = geometryFunction_(this.sketchCoords_);
    //console.log(geometry);
    this.sketchFeature_ = new ol.Feature();
    this.sketchFeature_.setGeometry(geometry);
    console.log(this.sketchFeature_)
    this.updateSketchFeatures_();
    this.dispatchEvent(new ol.interaction.Draw.Event("drawstart", this.sketchFeature_));
   }

Мой код ol-debug.js работает, но мне нужно использовать ol.js в проекте.ol-js меняет названия этих свойств из-за сжатия.Я хочу изменить эти свойства в своей функции, но я не нашел, какой из них соответствует какой.Как найти эквиваленты свойств ol-debug.js для ol.js?

1 Ответ

0 голосов
/ 12 декабря 2018

Вы можете использовать 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 самостоятельно, в моем случае это не так, но помните об этом.

...