Google Maps API предоставляет отличный инструмент для рисования объектов на карте. Это могут быть полигоны, окружности, линии и маркеры.

Но как старый знакомый может один железный шар потерять, а второй сломать, так и здесь могут быть варианты.

Варианты

Как показывает практика, если при рисовании полигона поставить две точки, а потом нажать Esc, создается полигон из двух точек. В случае, если Esc не нажимать, инструмент не позволит закончить рисование пока последняя точка полигона не совпадет с первой.

При рисовании круга первый клик обозначит центр окружности, второй — любую из точек окружности. Если кликнуть дважды в одном и том же месте, создается окружность нулевого радиуса. Как вы понимаете, смысла в таких объектах никакого, но тем не менее, Google почему-то позволяет это делать.

Как этого избежать?

Для того, чтобы запретить создание подобных объектов, нужно обработчикам событий polygoncomplete и circlecomplete добавить проверку, подходит ли нарисованный объект. В случае, если нет, объект удалять. Удалять же нужно будет полигоны с менее чем тремя точками и круги, где хоть одна точка окружности (по факту — все точки) совпадает с центром. Итак.

Здесь все просто, есть событие polygoncomplete, обработчик будет выглядеть так:

google.maps.event.addListener(drawingManager, "polygoncomplete", function(e) {
 if (e.getPath().getArray().length<3){
  e.setMap(null); // удаляем полигон
  return; // выходим из функции
 }
// обработка остальных полигонов
});

Для окружностей код будет следующим:

google.maps.event.addListener(drawingManager, "circlecomplete", function(e) {
 if (e.getRadius()==0){
  e.setMap(null); // даляем окружность
  return; // выходим из функции
 }
 // обработк остальных окружностей
});

Это простое решение поможет вам решить ошибку, которую могут допустить ваши польователи во фронтенде.

Коменти