У меня есть опыт работы с обычными 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);
}
}
Спасибо за вашу помощь.