Что добавить маркер на карту openlayer 5 с угловой 6

Я использую OpenLayers 5 для своего проекта в angular 6. Я реализовал его, чтобы показать карту, и она работает:-). Но я не могу показать какие-либо маркеры, пожалуйста, помогите мне!!! Показать примеры с этой версией OpenLayers...

import OlMap from 'ol/Map';
import OlXYZ from 'ol/source/XYZ';
import OlTileLayer from 'ol/layer/Tile';
import OlView from 'ol/View';
import Feature from 'ol/Feature';
import Point from 'ol/geom/Point';

import {fromLonLat} from 'ol/proj';

export class MyComponent implements OnInit {
    map: OlMap;
    source: OlXYZ;
    layer: OlTileLayer;
    view: OlView;
    marker: Feature;


ngOnInit() {
    this.marker = new Feature({
        geometry: new Point([27.46164, 53.902257])
    });

    this.source = new OlXYZ({
        url: 'http://tile.osm.org/{z}/{x}/{y}.png',
        features: [this.marker]
    });

    this.layer = new OlTileLayer({
        source: this.source
    });

    this.view = new OlView({
        center: fromLonLat([27.56164, 53.902257]),
        zoom: 14
    });

    this.map = new OlMap({
        target: 'map',
        layers: [this.layer],
        view: this.view
    });
}

}

1 ответ

Решение

Вам нужен векторный слой и источник для добавления объектов.

Ваш код выглядит следующим образом:

import OlMap from 'ol/Map';
import OlVectorSource from 'ol/source/Vector';
import OlVectorLayer from 'ol/layer/Vector';
import OlView from 'ol/View';
import OlFeature from 'ol/Feature';
import OlPoint from 'ol/geom/Point';
import OlXyzSource from 'ol/source/XYZ';
import OlTileLayer from 'ol/layer/Tile';

import {fromLonLat} from 'ol/proj';

export class MyComponent implements OnInit {

    map: OlMap;
    vectorSource: OlVectorSource;
    vectorLayer: OlVectorLayer;
    xyzSource: OlXyzSource;
    tileLayer: OlTileLayer;
    view: OlView;
    marker: OlFeature;

    ngOnInit() {

        /* Feature and vector */

        this.marker = new OlFeature({
            // Added fromLonLat
            geometry: new OlPoint(fromLonLat([27.46164, 53.902257]))
        });

        this.vectorSource = new OlVectorSource({
            features: [this.marker]
        });

        this.vectorLayer = new OlVectorLayer({
            source: this.vectorSource
        });

        /* XYZ */

        this.xyzSource = new OlXyzSource({
            url: 'http://tile.osm.org/{z}/{x}/{y}.png'
        });

        this.tileLayer = new OlTileLayer({
            source: this.xyzSource
        });

        /* View and map */

        this.view = new OlView({
            center: fromLonLat([27.56164, 53.902257]),
            zoom: 14
        });

        this.map = new OlMap({
            target: 'map',
            // Added both layers
            layers: [this.tileLayer, this.vectorLayer],
            view: this.view
        });
    }
}
Другие вопросы по тегам