Подскажите пожалуйста какой способ использовать для удаления маркера после клика по нему? Вот мой минимальный пример кода. Здесь после клика по карте созаётся маркер, выводится на карту и его координаты сохраняются в localStorage.
js:
ymaps.ready(init); var myMap, collectionMarkers, myPlacemark; function init(){ myMap = new ymaps.Map("map", { center: [55.76, 37.64], zoom: 7 }); collectionMarkers = new ymaps.GeoObjectCollection({}, { preset: "islands#redIcon" }); myMap.geoObjects.add(collectionMarkers); renderSavedPoints(); myMap.events.add('click', function (e) { var coords = e.get('coords'); console.log('lat:', coords[0], 'lng:', coords[1]); var placemark = new ymaps.Placemark([coords[0], coords[1]]); addRightClickEvent(placemark); collectionMarkers.add(placemark); addToStoragePoint({ lat: coords[0], lng: coords[1] }); }); }; function getPoints() { return localStorage.points ? JSON.parse(localStorage.points) : []; }; function addToStoragePoint(pointObj) { console.log('addToStoragePoint start'); var points = getPoints(); points.push(pointObj); localStorage.points = JSON.stringify(points); }; function renderSavedPoints() { console.log('renderSavedPoints start', collectionMarkers); var points = getPoints(); points.forEach((point) => { // console.log('lat:', point.lat, 'lng:', point.lng); var placemark = new ymaps.Placemark([point.lat, point.lng]); addRightClickEvent(placemark); collectionMarkers.add(placemark); }); }; function addRightClickEvent(placemark) { placemark.events.add('contextmenu', function (e) { var pointLat = e.get('coords')[0], pointLng = e.get('coords')[1]; console.log('right click', e.get('coords'), pointLat, pointLng); var points = getPoints(), newPoints = []; points.forEach((point) => { console.log('lat:', point.lat, 'lng:', point.lng); if(point.lat != pointLat && point.lng != pointLng ) { console.log('add!!'); newPoints.push(point); } else { console.log('del!!'); } }); localStorage.points = JSON.stringify(newPoints); }); };
Проблема в том, что после клика правой кнопкой мыши по маркеру не происходит удаление из localStorage объекта с координатами маркера. И соответственно карта не перерисовывается на основе нового localStorage/