- Genel Bakış
- Kitaplığı kullanma
- DrawingManager Seçenekleri
- Çizim Araçları Kontrolü'nü güncelleme
- Çizim Etkinlikleri
Genel Bakış
DrawingManager sınıfı, kullanıcıların haritada poligonlar, dikdörtgenler, çoklu çizgiler, daireler ve işaretçiler çizmesi için grafik arayüzü sağlar.
Kitaplığı kullanma
Çizim Araçları, ana Maps API JavaScript kodundan ayrı, bağımsız bir kitaplıktır. Bu kitaplıkta yer alan işlevleri kullanmak için öncelikle Maps API bootstrap URL'sindeki libraries parametresini kullanarak yüklemeniz gerekir:
<script async
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&loading=async&libraries=drawing&callback=initMap">
</script>Kitaplıklar parametresini ekledikten sonra DrawingManagernesneyi aşağıdaki gibi oluşturabilirsiniz:
var drawingManager = new google.maps.drawing.DrawingManager(); drawingManager.setMap(map);
DrawingManager Seçenekleri
DrawingManager oluşturucusu, görüntülenecek kontrolleri, kontrolün konumunu ve ilk çizim durumunu tanımlayan bir seçenekler grubu alır.
DrawingManageröğesinindrawingModeözelliği, DrawingManager'ın ilk çizim durumunu tanımlar.google.maps.drawing.OverlayTypesabitini kabul eder. Varsayılan değernull'dır. Bu durumda, DrawingManager başlatıldığında imleç çizim dışı bir modda olur.drawingControlözelliği,DrawingManageröğesinin haritadaki çizim araçları seçim arayüzünün görünürlüğünü tanımlar. Boole değerini kabul eder.- Ayrıca,
DrawingManageröğesinindrawingControlOptionsözelliğini kullanarak kontrolün konumunu ve kontrolde gösterilmesi gereken yer paylaşımlarının türlerini de tanımlayabilirsiniz.position, çizim kontrolünün haritadaki konumunu tanımlar vegoogle.maps.ControlPositionsabitini kabul eder.drawingModes,google.maps.drawing.OverlayTypesabitlerinden oluşan bir dizidir ve çizim denetimi şekil seçicisine eklenecek yer paylaşımı türlerini tanımlar. El simgesi her zaman görünür durumda olur. Böylece kullanıcı, çizim yapmadan haritayla etkileşimde bulunabilir. Kontroldeki araçların sırası, dizide bildirildikleri sırayla eşleşir.
- Her tür yerleşime, ilk oluşturulduğunda yerleşimin görünümünü tanımlayan bir dizi varsayılan özellik atanabilir. Bunlar, yer paylaşımının
{overlay}Optionsözelliğinde tanımlanır (burada{overlay}, yer paylaşımı türünü temsil eder). Örneğin, bir dairenin dolgu özellikleri, kontur özellikleri, zIndex ve tıklanabilirlik,circleOptionsözelliğiyle tanımlanabilir. Boyut, konum veya harita değerleri iletilirse bunlar yoksayılır. Hangi özelliklerin ayarlanabileceğiyle ilgili tüm ayrıntılar için API referans belgelerine bakın.
Not: Bir şekli oluşturulduktan sonra kullanıcı tarafından düzenlenebilir hale getirmek için editable özelliğini true olarak ayarlayın.
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;
Örneği deneyin
Çizim Araçları Kontrolünü Güncelleme
DrawingManager nesnesi oluşturulduktan sonra setOptions() işlevini çağırıp yeni değerler ileterek nesneyi güncelleyebilirsiniz.
drawingManager.setOptions({ drawingControlOptions: { position: google.maps.ControlPosition.BOTTOM_LEFT, drawingModes: ['marker'] } });
Çizim araçları kontrolünü gizlemek veya göstermek için:
// To hide: drawingManager.setOptions({ drawingControl: false }); // To show: drawingManager.setOptions({ drawingControl: true });
Çizim araçları kontrolünü map nesnesinden kaldırmak için:
drawingManager.setMap(null);
Çizim kontrolünün gizlenmesi, çizim araçları kontrolünün görüntülenmemesine neden olur ancak DrawingManager sınıfının tüm işlevleri kullanılmaya devam eder.
Bu şekilde kendi kontrolünüzü uygulayabilirsiniz. DrawingManager öğesinin map nesnesinden kaldırılması tüm çizim işlevlerini devre dışı bırakır. Çizim özelliklerinin geri yüklenmesi için DrawingManager öğesinin drawingManager.setMap(map) ile haritaya yeniden eklenmesi veya yeni bir DrawingManager nesnesi oluşturulması gerekir.
Çizim Etkinlikleri
Şekil yerleşimi oluşturulduğunda iki etkinlik tetiklenir:
{overlay}completeetkinliği ({overlay}, yer paylaşımı türünü temsil eder; örneğin,circlecomplete,polygoncompletevb.). Yerleşime yapılan referans, bağımsız değişken olarak aktarılır.overlaycompleteetkinliği.OverlayTypeve yer paylaşımlı öğeye referans içeren bir nesne değişmezi, bağımsız değişken olarak iletilir.
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(); } });
Harita üzerinde çizim yaparken google.maps.Map
etkinliklerinin (ör. click ve mousemove) devre dışı bırakıldığını unutmayın.