@Obivankinobi

Как отслеживать создание многоугольника на яндекс карте?

Добрый вечер!
Появилась необходимость на карте с балунами отметить область многоугольником. Во время создания и после которого нужно все время искать точки внутри области. Как искать во время создания я понял, а вот как после завершения создания обнулить событие и повесить новое непонятно.
Вот этот слушатель слушает при создании myPolygon.editor.events.add("vertexadd");
После создания многоугольника необходимо повесить этого слушателя myPolygon.events.add('geometrychange');
Вот как отследить окончание создания и поменять слушателя?)

var myPolygon = new ymaps.Polygon([], {}, {
			        // Курсор в режиме добавления новых вершин.
			        editorDrawingCursor: "crosshair",
			        // Максимально допустимое количество вершин.
			        editorMaxPoints: 5,
			        // Цвет заливки.
			        fillColor: '#00FF00',
			        // Цвет обводки.
			        strokeColor: '#0000FF',
			        // Ширина обводки.
			        strokeWidth: 5
			    });
			    var stateMonitor = new ymaps.Monitor(myPolygon.editor.state);
			    stateMonitor.add("drawing", function (newValue) {
			        myPolygon.options.set("strokeColor", newValue ? '#FF0000' : '#0000FF');
			    });

			    var eventer;
			    eventer =  myPolygon.editor.events.add("vertexadd", function (event) {
			     	var storage = ymaps.geoQuery(myMap2.geoObjects);
			     	var objectsInsidePoly = storage.searchInside(myPolygon);
						objectsInsidePoly.each(function(pm){
							//что-то делаем
				        });
myPolygon.editor.startDrawing();
  • Вопрос задан
  • 794 просмотра
Решения вопроса 1
@dmz9
если присмотреться то в коде добавляется мониторинг состояния редактора полигона.
var stateMonitor = new ymaps.Monitor(myPolygon.editor.state);
          stateMonitor.add("drawing", function (newValue) {
              myPolygon.options.set("strokeColor", newValue ? '#FF0000' : '#0000FF');
          });

мониторится "поле" state.
к нему документация вот тут https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/refe...
там где табличка с описанием написано справа что кроме "drawing" есть еще свойство "editing", т.е. состояние "редактируется", и оно булевого типа.
в обработчиках которые вешаются на свойства, вроде как, передается не только newValue, но и должно передаваться oldValue, поставь его в вызов функции вторым аргументом и проверь так или нет.
конец редактирования это если newValue==false, oldValue==true, это и будет по идее моментом окончания создания.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы