סקירה כללית
הכיתה DrawingManager
מספקת ממשק גרפי למשתמשים, כדי לשרטט פוליגונים, מלבנים, פוליגונים, עיגולים וסמנים במפה.
שימוש בספרייה
כלי השרטוט הם ספרייה עצמאית, בנפרד מקוד ה-JavaScript הראשי של Maps Maps. כדי להשתמש בפונקציונליות שבספרייה הזו, צריך לטעון אותה באמצעות הפרמטר libraries
בכתובת ה-URL של תוכנת האתחול ב-Maps API:
<script async
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=drawing&callback=initMap">
</script>
אחרי שמוסיפים את הפרמטר של הספריות, אפשר ליצור אובייקט DrawingManager
באופן הבא:
var drawingManager = new google.maps.drawing.DrawingManager(); drawingManager.setMap(map);
אפשרויות של DrawingManager
ביוצר DrawingManager
הוגדרה קבוצה של אפשרויות שמגדירות את קבוצת הפקדים להצגה, את מיקום הפקד ואת מצב השרטוט הראשוני.
- המאפיין
drawingMode
שלDrawingManager
מגדיר את מצב השרטוט הראשוני של 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
.
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;
לדגימה
עדכון אמצעי הבקרה של שרטוט
אחרי שיצרתם את האובייקט 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
, מושבתים בזמן השרטוט במפה.