- Présentation
- Utiliser la bibliothèque
- Options DrawingManager
- Modifier la commande des outils de dessin
- Événements de dessin
Présentation
La classe DrawingManager
fournit une interface graphique permettant aux utilisateurs de dessiner des polygones, des rectangles, des polylignes, des cercles et des repères sur la carte.
Utiliser la bibliothèque
Les outils de dessin constituent une bibliothèque autonome, séparée du code JavaScript principal de l'API Google Maps. Pour utiliser la fonctionnalité contenue dans cette bibliothèque, vous devez d'abord la charger à l'aide du paramètre libraries
dans l'URL d'amorçage de l'API Google Maps :
<script async
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&loading=async&libraries=drawing&callback=initMap">
</script>
Une fois le paramètre de bibliothèques ajouté, vous pouvez créer un objet DrawingManager
comme suit :
var drawingManager = new google.maps.drawing.DrawingManager(); drawingManager.setMap(map);
Options DrawingManager
Le constructeur DrawingManager
utilise un ensemble d'options qui définissent l'ensemble des commandes à afficher, la position de la commande et l'état de dessin initial.
- La propriété
drawingMode
deDrawingManager
définit l'état de dessin initial de DrawingManager. Elle accepte une constantegoogle.maps.drawing.OverlayType
. La valeur par défaut estnull
. Dans ce cas, le curseur n'est pas en mode Dessin lorsque le DrawingManager est initialisé. - La propriété
drawingControl
deDrawingManager
définit la visibilité de l'interface de sélection des outils de dessin sur la carte. Elle accepte une valeur booléenne. - Vous pouvez également définir la position de la commande et les types de superpositions à représenter dans la commande avec la propriété
drawingControlOptions
deDrawingManager
.position
définit la position de la commande de dessin sur la carte et accepte une constantegoogle.maps.ControlPosition
.drawingModes
est un tableau de constantesgoogle.maps.drawing.OverlayType
et définit les types de superpositions à inclure dans le sélecteur de forme de la commande de dessin. L'icône de main est toujours présente. Elle permet à l'utilisateur d'interagir avec la carte sans dessiner dessus. L'ordre des outils dans la commande est identique à l'ordre dans lequel ils sont déclarés dans le tableau.
- Il est possible d'attribuer des propriétés par défaut à tout type de superposition afin de définir quelle sera son apparence au moment de sa création. Elles sont définies dans la propriété
{overlay}Options
de cette superposition (où{overlay}
représente le type de superposition). Par exemple, pour un cercle, les propriétés de remplissage et de trait, le zIndex et la cliquabilité peuvent être définis dans la propriétécircleOptions
. Si des valeurs de taille, de carte ou de localisation sont transmises, elles sont ignorées. Pour en savoir plus sur les propriétés pouvant être définies, consultez la documentation de référence de l'API.
Remarque : Pour qu'une forme soit modifiable par l'utilisateur une fois créée, définissez sa propriété editable
sur 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;
Essayer l'exemple
Modifier la commande des outils de dessin
Une fois l'objet DrawingManager
créé, vous pouvez le modifier en appelant setOptions()
et en transmettant de nouvelles valeurs.
drawingManager.setOptions({ drawingControlOptions: { position: google.maps.ControlPosition.BOTTOM_LEFT, drawingModes: ['marker'] } });
Pour masquer ou afficher la commande des outils de dessin :
// To hide: drawingManager.setOptions({ drawingControl: false }); // To show: drawingManager.setOptions({ drawingControl: true });
Pour supprimer la commande des outils de dessin de l'objet map
:
drawingManager.setMap(null);
Si vous masquez la commande de dessin, elle ne s'affiche plus. Néanmoins, toutes les fonctionnalités de la classe DrawingManager
restent disponibles.
Ainsi, vous pouvez implémenter vos propres commandes, si vous le souhaitez. Si vous supprimez le DrawingManager
de l'objet map
, toutes les fonctionnalités de dessin sont désactivées. Pour les restaurer, vous devrez réassocier le DrawingManager à la carte avec drawingManager.setMap(map)
, ou bien construire un nouvel objet DrawingManager
.
Événements de dessin
La création d'une superposition de forme déclenche deux événements :
- Un événement
{overlay}complete
(où{overlay}
représente le type de superposition, par exemplecirclecomplete
,polygoncomplete
, etc.). Une référence à la superposition est transmise en tant qu'argument. - Un événement
overlaycomplete
. Un littéral d'objet, contenant l'OverlayType
et une référence à la superposition, est transmis en tant qu'argument.
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(); } });
Remarque : Les événements google.maps.Map
comme click
et mousemove
sont désactivés lorsque vous dessinez sur la carte.