Особенности крошечные

Я перемещаю свою карту от получения URL-адреса непосредственно в источнике к модели, в которой я извлекаю данные отдельно и добавляю их вручную. Взятие URL-адреса непосредственно в источнике, как показано ниже, работало отлично.

var vectorSource = new ol.source.Vector({
    url: `${document.ApiRoot}/api/features/${this.Zoom}?coordinateList=${this.ViewportCoordinates.join(",")}`,
    format: new ol.format.GeoJSON()
});
await this.mainLayer.setSource(vectorSource);

Итак, теперь я создаю один векторный источник для своего слоя, который больше не заменяется. Я использую приведенный ниже код, чтобы обновить карту новыми функциями.

const features = await Api.GetFeatures(this.Zoom, this.ViewportCoordinates);

this.featureVectorSource.clear();
var geojsonFormat = new ol.format.GeoJSON();
const olFeatures = geojsonFormat.readFeatures(JSON.stringify(features));
this.featureVectorSource.addFeatures(olFeatures);

Я проверил результаты с помощью инструментов отладки браузера, и все выглядит правильно. Объекты корректно анализируются и добавляются на карту. Если я проверю слой и получу его характеристики, значит, они есть. Карта выглядит практически пустой, однако в раздражении я прокрутил ее в поисках чего-то и, конечно же, нашел свои особенности. Объект на пустой карте

Эта точка — функция, я могу выбрать ее и считать с нее данные, как раньше.

Я пытался возиться с прогнозами, но я не совсем понимаю, что я делаю. Похоже, что функция каким-то образом преобразует свои координаты, когда они мне не нужны. Я включил отображение координат на карте с помощью указателя мыши, и это тоже нормально.

Я в растерянности. Любая помощь приветствуется, спасибо.


person Teeseesee    schedule 12.03.2021    source источник


Ответы (1)


Как это всегда бывает, я несколько дней над чем-то бился, задаю вопрос и через полчаса нахожу ответ.

Для меня мне пришлось читать особенности, используя параметры. Вы можете определить проекцию данных и проекцию объектов. Как только я возился с этим, я вернул свои функции. Я до сих пор не понимаю, как это работало с использованием URL-адреса, а не при ручном обновлении функций, но я, наконец, прошел это.

        static madoobry = {
            dataProjection: 'EPSG:4326',
            featureProjection: 'EPSG:3857'
        };
        private async updateMapWithNewFeatures(): Promise<void> {
            if (Number.isNaN(this.ViewportCoordinates[0])) return;
            debugger;
            const features = await Api.GetFeatures(this.Zoom, this.ViewportCoordinates);

            this.featureVectorSource.clear();
            var geojsonFormat = new ol.format.GeoJSON();
            const olFeatures = geojsonFormat.readFeatures(JSON.stringify(features), Globe.madoobry);
            this.featureVectorSource.addFeatures(olFeatures);
        }

Извините за глупое название свойств. Ключевым изменением является madoobry и его использование при вызове readFeatures.

person Teeseesee    schedule 12.03.2021