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; // выходим из функции } // обработк остальных окружностей });
Это простое решение поможет вам решить ошибку, которую могут допустить ваши польователи во фронтенде.