- Обзор
- Воспользуйтесь библиотекой
- Параметры DrawingManager
- Обновите элемент управления «Инструменты рисования»
- События розыгрыша
Обзор
Класс DrawingManager
предоставляет пользователям графический интерфейс для рисования многоугольников, прямоугольников, полилиний, кругов и маркеров на карте.
Воспользуйтесь библиотекой
Инструменты рисования — это самостоятельная библиотека, отдельная от основного JavaScript-кода API Карт. Чтобы использовать функциональность этой библиотеки, необходимо сначала загрузить её с помощью параметра libraries
в URL-адресе начальной загрузки API Карт:
<script async
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&loading=async&libraries=drawing&callback=initMap">
</script>
После добавления параметра libraries вы можете создать объект DrawingManager
следующим образом:
var drawingManager = new google.maps.drawing.DrawingManager(); drawingManager.setMap(map);
Параметры DrawingManager
Конструктор DrawingManager
принимает набор параметров, которые определяют набор отображаемых элементов управления, положение элемента управления и начальное состояние рисования.
- Свойство
drawingMode
объектаDrawingManager
определяет начальное состояние отрисовки. Оно принимает константуgoogle.maps.drawing.OverlayType
. Значение по умолчанию —null
, что означает, что курсор находится в режиме без отрисовки при инициализации DrawingManager. - Свойство
drawingControl
объектаDrawingManager
определяет видимость интерфейса выбора инструментов рисования на карте. Оно принимает логическое значение. - Вы также можете определить положение элемента управления и типы наложений, которые должны быть представлены в элементе управления, используя свойство
drawingControlOptions
объектаDrawingManager
.-
position
определяет положение элемента управления рисованием на карте и принимает константуgoogle.maps.ControlPosition
. -
drawingModes
— это массив константgoogle.maps.drawing.OverlayType
, который определяет типы наложений, включаемые в выбор формы элемента управления рисованием. Значок руки будет присутствовать всегда, позволяя пользователю взаимодействовать с картой без рисования. Порядок инструментов в элементе управления будет соответствовать порядку, в котором они объявлены в массиве.
-
- Каждому типу наложения можно назначить набор свойств по умолчанию, которые определяют его внешний вид при создании. Они определяются в свойстве
{overlay}Options
этого наложения (где{overlay}
соответствует типу наложения). Например, свойства заливки и обводки круга, zIndex и кликабельность можно определить с помощью свойстваcircleOptions
. Если передаются какие-либо значения размера, местоположения или карты, они игнорируются. Подробную информацию о доступных для установки свойствах см. в справочной документации API .
Примечание: чтобы сделать фигуру доступной для редактирования пользователем после ее создания, установите для ее свойства editable
значение true
.
Машинопись
// This example requires the Drawing library. Include the libraries=drawing // parameter when you first load the API. For example: // <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=drawing"> function initMap(): void { const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { center: { lat: -34.397, lng: 150.644 }, zoom: 8, } ); const drawingManager = new google.maps.drawing.DrawingManager({ drawingMode: google.maps.drawing.OverlayType.MARKER, drawingControl: true, drawingControlOptions: { position: google.maps.ControlPosition.TOP_CENTER, drawingModes: [ google.maps.drawing.OverlayType.MARKER, google.maps.drawing.OverlayType.CIRCLE, google.maps.drawing.OverlayType.POLYGON, google.maps.drawing.OverlayType.POLYLINE, google.maps.drawing.OverlayType.RECTANGLE, ], }, markerOptions: { icon: "https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png", }, circleOptions: { fillColor: "#ffff00", fillOpacity: 1, strokeWeight: 5, clickable: false, editable: true, zIndex: 1, }, }); drawingManager.setMap(map); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
// This example requires the Drawing library. Include the libraries=drawing // parameter when you first load the API. For example: // <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=drawing"> function initMap() { const map = new google.maps.Map(document.getElementById("map"), { center: { lat: -34.397, lng: 150.644 }, zoom: 8, }); const drawingManager = new google.maps.drawing.DrawingManager({ drawingMode: google.maps.drawing.OverlayType.MARKER, drawingControl: true, drawingControlOptions: { position: google.maps.ControlPosition.TOP_CENTER, drawingModes: [ google.maps.drawing.OverlayType.MARKER, google.maps.drawing.OverlayType.CIRCLE, google.maps.drawing.OverlayType.POLYGON, google.maps.drawing.OverlayType.POLYLINE, google.maps.drawing.OverlayType.RECTANGLE, ], }, markerOptions: { icon: "https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png", }, circleOptions: { fillColor: "#ffff00", fillOpacity: 1, strokeWeight: 5, clickable: false, editable: true, zIndex: 1, }, }); drawingManager.setMap(map); } window.initMap = initMap;
Попробуйте образец
Обновите элемент управления «Инструменты рисования»
После создания объекта DrawingManager
вы можете обновить его, вызвав setOptions()
и передав новые значения.
drawingManager.setOptions({ drawingControlOptions: { position: google.maps.ControlPosition.BOTTOM_LEFT, drawingModes: ['marker'] } });
Чтобы скрыть или показать элемент управления инструментами рисования:
// To hide: drawingManager.setOptions({ drawingControl: false }); // To show: drawingManager.setOptions({ drawingControl: true });
Чтобы удалить элемент управления инструментами рисования из объекта map
:
drawingManager.setMap(null);
Скрытие элемента управления рисованием приводит к тому, что элемент управления инструментами рисования не отображается, но все функции класса DrawingManager
остаются доступными. Таким образом, вы можете реализовать свой собственный элемент управления. Удаление DrawingManager
из объекта map
отключает все функции рисования; для восстановления элементов чертежа его необходимо заново прикрепить к карте с помощью drawingManager.setMap(map)
или создать новый объект DrawingManager
.
События розыгрыша
При создании наложения фигуры запускаются два события:
- Событие
{overlay}complete
(где{overlay}
представляет тип наложения, например,circlecomplete
,polygoncomplete
и т. д.). Ссылка на наложение передаётся в качестве аргумента. - Событие
overlaycomplete
. В качестве аргумента передаётся литерал объекта, содержащийOverlayType
и ссылку на оверлей.
google.maps.event.addListener(drawingManager, 'circlecomplete', function(circle) { var radius = circle.getRadius(); }); google.maps.event.addListener(drawingManager, 'overlaycomplete', function(event) { if (event.type == 'circle') { var radius = event.overlay.getRadius(); } });
Обратите внимание, что события google.maps.Map
, такие как click
и mousemove
, отключены во время рисования на карте.