title: how to draw polygon using Markers and midpoints of polylines in google maps
body: <p>I want to draw a Free Hand Polygon on the Map.I started with simple Google Map &amp; draw polygon &amp; it is working properly but now I am looking for how a user can draw polygon by clicking points on map and stretching markers mid Points on the polygon.</p>
  
  <p><strong>now my map with polygon looks like:</strong></p>
  
  <p><a href="https://i.stack.imgur.com/av4NU.jpg" rel="noreferrer"><img src="https://i.stack.imgur.com/av4NU.jpg" alt="this"></a></p>
  
  <p><strong>and i want to implement :</strong></p>
  
  <p><a href="https://i.stack.imgur.com/AFGRD.jpg" rel="noreferrer"><img src="https://i.stack.imgur.com/AFGRD.jpg" alt="this"></a></p>
  
  <p><strong>here is my code:</strong></p>
  
  <pre><code>     public class MapActivity extends FragmentActivity implements OnMapReadyCallback {
  
  private GoogleMap mMap;
  Button save_field;
  
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_map);
  
      // Retrieve the content view that renders the map.
      SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
              .findFragmentById(R.id.map);
      mapFragment.getMapAsync(this);
  
      FrameLayout Frame_map = (FrameLayout) findViewById(R.id.frame_map);
      Button btn_draw_State = (Button) findViewById(R.id.btn_draw_State);
      final Boolean[] Is_MAP_Moveable = {false}; // to detect map is movable
  
      // Button will change Map movable state
      btn_draw_State.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              Is_MAP_Moveable[0] = !Is_MAP_Moveable[0];
          }
      });
  }
  
  public GoogleMap getmMap() {
      return mMap;
  }
  
  @Override
  public void onMapReady(GoogleMap googleMap) {
      mMap = googleMap;
  
      /*polygon should be declared as member of the fragment class if you want just one polygon at a time*/
      final List&lt;LatLng&gt; latLngList = new ArrayList&lt;&gt;(); // list of polygons
      final List&lt;Marker&gt; markerList = new ArrayList&lt;&gt;();
  
      mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
          @Override
          public void onMapClick(final LatLng latLng) {
  
  
              MarkerOptions markerOptions = new MarkerOptions(); //create marker options
              markerOptions.position(latLng);
              markerOptions.title(latLng.latitude + ":" + latLng.longitude);
              mMap.clear();
              mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
              mMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
              Marker marker = mMap.addMarker(markerOptions);
              latLngList.add(latLng);
              markerList.add(marker);
  
  
              Polygon polygon = null;
              if (polygon != null ) polygon.remove(); // remove the previously drawn polygon
              PolygonOptions polygonOptions = new PolygonOptions().addAll(latLngList).clickable(true);
              polygon = mMap.addPolygon(new PolygonOptions().addAll(latLngList).fillColor(Color.BLUE).strokeColor(Color.RED));//add new polygon
  
          }
      });
               save_field = findViewById(R.id.save);
               save_field.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {
  
              startActivity(new Intent(MapActivity.this, Save_Fields.class));
              finish();
          }
      });
    }
   }
  </code></pre>
  
  <p>I have done lots of Research and Development on this topic but didn't get a perfect way to implement such a thing in google Maps.if anyone know the way then please help me to find out solution. thank you in advance:)</p>