- Panoramica
- Utilizzare la raccolta
- Opzioni di DrawingManager
- Aggiornare il controllo degli strumenti di disegno
- Eventi di disegno
Panoramica
La classe DrawingManager
fornisce un'interfaccia grafica che consente agli utenti di disegnare
poligoni, rettangoli, polilinee, cerchi e indicatori sulla mappa.
Usare la raccolta
Gli strumenti di disegno sono una libreria autonoma, separata dal codice JavaScript principale dell'API Maps. Per utilizzare la funzionalità contenuta in questa libreria,
devi prima caricarla utilizzando il parametro libraries
nell'URL di bootstrap dell'API Maps:
<script async
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&loading=async&libraries=drawing&callback=initMap">
</script>
Dopo aver aggiunto il parametro delle librerie, puoi creare un oggetto DrawingManager
come segue:
var drawingManager = new google.maps.drawing.DrawingManager(); drawingManager.setMap(map);
Opzioni DrawingManager
Il costruttore DrawingManager
accetta un insieme di opzioni che definiscono l'insieme di
controlli da visualizzare, la posizione del controllo e lo stato iniziale del disegno.
- La proprietà
drawingMode
diDrawingManager
definisce lo stato iniziale del disegno di DrawingManager. Accetta una costantegoogle.maps.drawing.OverlayType
. Il valore predefinito ènull
, nel qual caso il cursore è in modalità non di disegno quando viene inizializzato DrawingManager. - La proprietà
drawingControl
diDrawingManager
definisce la visibilità dell'interfaccia di selezione degli strumenti di disegno sulla mappa. Accetta un valore booleano. - Puoi anche definire la posizione del controllo e i tipi di overlay che devono essere rappresentati nel controllo utilizzando la proprietà
drawingControlOptions
diDrawingManager
.position
definisce la posizione del controllo di disegno sulla mappa e accetta una costantegoogle.maps.ControlPosition
.drawingModes
è un array di costantigoogle.maps.drawing.OverlayType
e definisce i tipi di overlay da includere nel selettore di forme del controllo di disegno. L'icona della mano sarà sempre presente, consentendo all'utente di interagire con la mappa senza disegnare. L'ordine degli strumenti nel controllo corrisponderà all'ordine in cui sono dichiarati nell'array.
- A ogni tipo di overlay può essere assegnato un insieme di proprietà predefinite che
ne definiscono l'aspetto al momento della creazione. Questi sono definiti
nella proprietà
{overlay}Options
dell'overlay (dove{overlay}
rappresenta il tipo di overlay). Ad esempio, le proprietà di riempimento, le proprietà del tratto, zIndex e la possibilità di fare clic su un cerchio possono essere definiti con la proprietàcircleOptions
. Se vengono passati valori di dimensioni, posizione o mappa, questi vengono ignorati. Per tutti i dettagli sulle proprietà che possono essere impostate, consulta la documentazione di riferimento dell'API.
Nota:per rendere una forma modificabile dall'utente dopo la sua creazione, imposta la proprietà editable
su true
.
TypeScript
// 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;
Prova campione
Aggiornare il controllo degli strumenti di disegno
Una volta creato l'oggetto DrawingManager
, puoi aggiornarlo chiamando setOptions()
e passando nuovi valori.
drawingManager.setOptions({ drawingControlOptions: { position: google.maps.ControlPosition.BOTTOM_LEFT, drawingModes: ['marker'] } });
Per nascondere o mostrare il controllo degli strumenti di disegno:
// To hide: drawingManager.setOptions({ drawingControl: false }); // To show: drawingManager.setOptions({ drawingControl: true });
Per rimuovere il controllo degli strumenti di disegno dall'oggetto map
:
drawingManager.setMap(null);
Nascondere il controllo del disegno fa sì che il controllo degli strumenti di disegno non venga visualizzato,
ma tutte le funzionalità della classe DrawingManager
sono ancora disponibili.
In questo modo, puoi implementare il tuo controllo. La rimozione di
DrawingManager
dall'oggetto map
disattiva tutte le funzionalità di disegno; deve
essere ricollegato alla mappa con drawingManager.setMap(map)
o deve essere costruito un nuovo
oggetto DrawingManager
se si vogliono ripristinare le funzionalità di disegno.
Eventi di disegno
Quando viene creata una sovrapposizione di forme, vengono attivati due eventi:
- Un evento
{overlay}complete
(dove{overlay}
rappresenta il tipo di overlay, ad esempiocirclecomplete
,polygoncomplete
e così via). Un riferimento all'overlay viene passato come argomento. - Un evento
overlaycomplete
. Un letterale oggetto, contenenteOverlayType
e un riferimento all'overlay, viene passato come argomento.
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(); } });
Tieni presente che gli eventi google.maps.Map
,
come click
e mousemove
, sono disattivati durante il disegno sulla mappa.