Rajnikanth
Rajnikanth

Reputation: 2795

How to get Google map polygon vertex point draw/pin event?

I want to allow a user to draw polygon inside the polygon. I can get lat/long using constainsLocation function (https://developers.google.com/maps/documentation/javascript/examples/poly-containsLocation) But when user draws a polygon I want to detect that the point/vertex drawn by user is inside the polygon. So there any event to detect click/draw event when user is drawing polygon?

	
var map; // Global declaration of the map
			var iw = new google.maps.InfoWindow(); // Global declaration of the infowindow
			var lat_longs = new Array();
			var markers = new Array();
			var drawingManager;
			function initialize() {
				 var myLatlng = new google.maps.LatLng(40.9403762, -74.1318096);
				var myOptions = {
			  		zoom: 13,
					center: myLatlng,
			  		mapTypeId: google.maps.MapTypeId.ROADMAP}
				map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
				drawingManager = new google.maps.drawing.DrawingManager({
				drawingMode: google.maps.drawing.OverlayType.POLYGON,
  				drawingControl: true,
  				drawingControlOptions: {
  					position: google.maps.ControlPosition.TOP_CENTER,
					drawingModes: [google.maps.drawing.OverlayType.POLYGON]
				},
						polygonOptions: {
							editable: true
						}
			});
			drawingManager.setMap(map);
			
			google.maps.event.addListener(drawingManager, "overlaycomplete", function(event) {
				var newShape = event.overlay;
				newShape.type = event.type;
			});

            google.maps.event.addListener(drawingManager, "overlaycomplete", function(event){
                overlayClickListener(event.overlay);
                $('#vertices').val(event.overlay.getPath().getArray());
            });
        }
function overlayClickListener(overlay) {
    alert('hello');
    google.maps.event.addListener(overlay, "mouseup", function(event){
        $('#vertices').val(overlay.getPath().getArray());
        
    });
}
 initialize();

$(function(){
    $('#save').click(function(){
        //iterate polygon vertices?
    });
});
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="http://maps.google.com/maps/api/js?sensor=false&libraries=drawing&dummy=.js"></script>
<div id="map_canvas" style="width:500px; height:450px;"></div>
<form method="post" accept-charset="utf-8" id="map_form">
    <input type="text" name="vertices" value="" id="vertices"  />
    <input type="button" name="save" value="Save!" id="save"  />
</form>

When user draws first polygon than user should not be able to draw another polygon outside it. Is there any event?

Thanks

Upvotes: 3

Views: 1644

Answers (1)

AniV
AniV

Reputation: 4037

You can use Drawing Manager to make the area of the Google Maps outside the Polygon as non-editable.

Once the user draw a polygon (when you see that the user has reached the same point/vertex from where he started) call this function to make rest of the area of Google Map as non-editable.

$('#showRes').click(function(){
    drawingManager.setDrawingMode(null);
    drawingManager.setOptions({ 
        polygonOptions: {
            paths: pathArr,
            strokeWeight: 2,
            fillOpacity: 0.2,
            editable: false,
            fillColor: '#FF0000',
            strokeColor: '#FF0000',
            geodesic: true,
            suppressUndo: true
        }
    });
} 

Hope that Helps!!

Upvotes: 1

Related Questions