Проблема с векторными слоями в Openlayers с использованием ES2015 - PullRequest
0 голосов
/ 02 мая 2018

У меня есть опыт работы с обычными openlayers (с использованием cdn или загрузкой файлов .js), но недавно я начал пробовать пакет npm ol с Angular 5. Создать карту не проблема, но когда я пытаюсь добавить векторный слой, в Chrome всегда появляется сообщение о том, что Vector не является конструктором. Это код, который я использую:

import { Injectable } from '@angular/core';
import Map from 'ol/map';
import View from 'ol/view';
import TileLayer from 'ol/layer/tile';
import XYZ from 'ol/source/xyz';
import GeoJSON from 'ol/format/geojson';
import { Vector as VectorSource } from 'ol/source/vector';
import { Vector as VectorLayer } from 'ol/layer/vector';

@Injectable()
export class MapService {
    map : Map;
    countriesLayer : VectorLayer;
    countriesSource : VectorSource;


   constructor() { }

   renderMap() {

    let url = 'https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png';
    let features = 'https://openlayers.org/en/v4.6.5/examples/data/geojson/countries.geojson'

      this.map = new Map({
          view : new View({
              center : [0, 0],
              zoom : 2
          }),
          layers : [
              new TileLayer({
                  source : new XYZ({
                      url : url
                  })
              })

          ],
          target : "map"
      });

  }

  addVectorLayer() {

      this.countriesSource = new VectorSource({
          url : features,
          format : new GeoJSON()
      });


      this.countriesLayer = new VectorLayer({
          source : this.countriesSource
      });


      this.map.addLayer(this.countriesLayer);

  }


}

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 12 мая 2018

Я думаю, что и 'ol/source/vector', и 'ol/layer/vector' обеспечивают экспорт по умолчанию. Попробуйте без псевдонима:

import VectorSource from 'ol/source/vector';
import VectorLayer from 'ol/layer/vector';
...