نظرة عامة
توفّر الفئة DrawingManager
واجهة رسومية يمكن للمستخدمين رسمها.
المضلّعات والمستطيلات والخطوط المتعددة والدوائر والعلامات على الخريطة.
استخدام المكتبة
أدوات الرسم هي مكتبة مستقلة منفصلة عن خرائط Google الرئيسية،
رمز JavaScript لواجهة برمجة التطبيقات. لاستخدام الوظائف المضمنة في هذه المكتبة،
يجب تحميله أولاً باستخدام المَعلمة libraries
في
عنوان URL لتمهيد واجهة برمجة التطبيقات للخرائط:
<script async
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&loading=async&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
الموقع. في حال تمرير قيم بأي حجم أو موقع أو خريطة، سيتم تجاهلها. للاطّلاع على التفاصيل الكاملة للخصائص التي يمكن ضبطها، يمكنك الرجوع إلى مقالة المستندات المرجعية لواجهة برمجة التطبيقات
ملاحظة: لجعل شكل قابلاً للتعديل بواسطة المستخدم بعد
تم إنشاء خاصيته 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
أثناء الرسم على الخريطة.