Динамически изменять точку / маркер при нажатии Openlayers 5

#wordpress #openlayers #openlayers-5

#wordpress #openlayers #openlayers-5

Вопрос:

У меня возникли проблемы при попытке реализовать динамический маркер в моем виджете карты OpenLayer. Я бы хотел, чтобы маркер / точка была размещена на карте «onclick». Вместо того, чтобы размещать новую точку / маркер при каждом щелчке мыши, я бы хотел, чтобы маркер обновлялся в новой позиции. Я пытался найти некоторую документацию по слоям / векторам и испытывал трудности с пониманием того, как обновить / заменить слой…

Вот мой текущий старый код для моей карты, который обновляет два входных параметра широтой и долготой при щелчке мыши:

 var map = new ol.Map({
    target: 'map',
    layers: [
    new ol.layer.Tile({
    source: new ol.source.OSM()
    }),
    ],
    view: new ol.View({
    center: ol.proj.fromLonLat([37.41, 8.82]),
    zoom: 4
    })
    });

map.on('click', function(evt){
    var lonlat = ol.proj.transform(evt.coordinate, 'EPSG:3857', 'EPSG:4326');
    var lon = lonlat[0];
    var lat = lonlat[1];
    document.getElementById("latitude").value = lat;
    document.getElementById("longitude").value = lon;
});
  

Заранее спасибо!

Ответ №1:

Если ваш маркер является точечным элементом, что-то вроде этого должно это сделать

 map.on('click', function(evt){
    myMarker.getGeometry().setCoordinates(evt.coordinates);
});