Disegnare su Google Maps con Javascript
Spulciandomi la documentazione ufficiale, ho visto che è possibile disegnare su Google Maps includendo nelle nostre pagina una libreria apposita: drawing!
Viene inclusa direttamente con Google Maps, passandolo come parametro:
<script
src="https://maps.googleapis.com/maps/api/js?libraries=drawing">
</script>
Più sotto vi ho messo un esempio di pagina tutto incluso:
- richiamare la libreria
- attivare il disegno di:
- circle
- rectangle
- polygon
- polyline
- marker
- settare alcune opzioni generali
- settare opzioni specifiche per un tipo di disegno (il rettangolo in questo caso)
- intercettare tre eventi:
- fine disegno circle
- fine disegno rectangle
- fine disegno in generale
Però ci sono alcune cose da tenere a mente:
- anche se gli esempi sono presi dalla documentazione ufficiale, i disegni di polygon e polyline non mi funzionano (ma non mi funzionano neanche sull'esempio uffciale)
- non ho ben capito come dovrebbe funzionare l'editable che ho messo sul rectangle; nel senso che sembra sia possibile modificarlo, ma nella pratica non ci riesco (fate una prova per capire che intendo)
Ecco qua:
<!DOCTYPE html>
<html>
<head>
<title>GMAPS DRAWING</title>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
</head>
<body>
<div id="map" style="height: 700px;"></div>
<script>
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
center: {lat: 41.8962546, lng: 12.5348237},
zoom: 8
});
var drawingManager = new google.maps.drawing.DrawingManager({
drawingMode: google.maps.drawing.OverlayType.MARKER,
drawingControl: true,
drawingControlOptions: {
position: google.maps.ControlPosition.TOP_CENTER,
drawingModes: ['marker', 'circle', 'polygon', 'polyline', 'rectangle']
},
rectangleOptions: {
fillColor: '#ffffff',
fillOpacity: 1,
strokeWeight: 5,
clickable: false,
editable: true,
zIndex: 1
}
});
drawingManager.setMap(map);
google.maps.event.addListener(drawingManager, 'circlecomplete',
function (circle) {
console.log(circle.getRadius());
});
google.maps.event.addListener(drawingManager, 'rectanglecomplete',
function (rectangle) {
console.log(rectangle.getBounds());
});
google.maps.event.addListener(drawingManager, 'overlaycomplete',
function (event) {
console.log(event.type);
console.log(event.overlay);
});
}
</script>
<script
src="https://maps.googleapis.com/maps/api/js?libraries=drawing&callback=initMap"
async defer>
</script>
</body>
</html>
Enjoy!
javascript google maps drawing
Commentami!