ภาพรวม
คลาส 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>
เมื่อเพิ่มพารามิเตอร์ไลบรารีแล้ว คุณจะสร้าง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
ใหม่ หากต้องการกู้คืนฟีเจอร์การวาด
งานกิจกรรมการวาดภาพ
เมื่อสร้างการวางซ้อนรูปร่าง ระบบจะทริกเกอร์เหตุการณ์ 2 รายการดังนี้
{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
จะปิดใช้ขณะวาดบนแผนที่