JSFiddle - React, Tailwind, and code Playground
by iamjpg
HTML
<script src="https://cdn.rawgit.com/seabre/simplify-geometry/master/simplifygeometry-0.0.2.js"></script>
<div id="map"></div>
<script src="//maps.google.com/maps/api/js?key=AIzaSyDciDh5LCPwyxG8tml6998d80mlukEj8Q4&libraries=drawing,places,geometry"></script>
CSS
#map {
position: absolute;
top: 0;
bottom: 0;
right: 0;
left: 0;
}
JavaScript
// Init the map
var map = new google.maps.Map(document.getElementById('map'), {
center: {
lat: 39.14,
lng: -98.1,
},
zoom: 4,
});
var minifiedArray = [];
var returnGeometry = function(points) {
var arr = [];
points.forEach((o, i) => {
arr.push({
lat: o[0],
lng: o[1]
});
});
return arr;
}
var drawPolygon = function() {
var poly = new google.maps.Polygon({
paths: returnGeometry(simplifyGeometry(minifiedArray, 1)),
strokeColor: '#FF0000',
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: '#FF0000',
fillOpacity: 0.35
});
poly.setMap(map);
}
var trackMouseMove = function() {
drawnPointArray = [];
minifiedArray = [];
map.addListener('mousemove', function(e) {
minifiedArray.push([e.latLng.lat(), e.latLng.lng()])
});
}
map.setOptions({
draggable: false
});
map.addListener('mousedown', function() {
trackMouseMove();
});
map.addListener('mouseup', function() {
document.onmousemove = null;
drawPolygon();
});