- 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é
drawingModedeDrawingManagerdé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é
drawingControldeDrawingManagerdé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é
drawingControlOptionsdeDrawingManager.positiondéfinit la position de la commande de dessin sur la carte et accepte une constantegoogle.maps.ControlPosition.drawingModesest un tableau de constantesgoogle.maps.drawing.OverlayTypeet 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}Optionsde 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 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'OverlayTypeet 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.