- סקירה כללית
- שימוש בספרייה
- אפשרויות של DrawingManager
- עדכון של אמצעי הבקרה של כלי השרטוט
- אירועי שרטוט
סקירה כללית
הכיתה DrawingManager
מספקת ממשק גרפי שמאפשר למשתמשים לצייר במפה פוליגונים, מלבנים, קווים פוליגונליים, עיגולים וסימנים.
שימוש בספרייה
כלי הציור הם ספרייה עצמאית, נפרדת מקוד ה-JavaScript הראשי של Maps API. כדי להשתמש בפונקציונליות שמכילה הספרייה הזו, צריך קודם לטעון אותה באמצעות הפרמטר libraries
בכתובת ה-URL של טעינה ראשונית של Maps 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
ה-constructor של 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
, מושבתים בזמן שמשרטטים במפה.