title: Android Google Map how to check if the gps location is inside the circle
body: <p>I'm trying to detect if a user is in the radius of a Marker , using the users gps location. I have the marker's coordinates, but I don't know how to calculate whether the user is in the area. I've tried to use the following, but even when the current location is inside the circle I keep getting the "outside" message.</p>
  
  <pre><code>public class MapaEscola extends FragmentActivity {
  
      private GoogleMap googleMap;
      private Serializable escolas;
      private ProgressDialog dialog;
      private Circle mCircle;
      private Marker mMarker;
  
  
  
      @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
  
          getActionBar().setDisplayHomeAsUpEnabled(true);
          getActionBar().setHomeButtonEnabled(true);
  
          setContentView(R.layout.maps);
  
          // Loading map
          initilizeMap();
  
          // Changing map type
          googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
  
          // Showing / hiding your current location
          googleMap.setMyLocationEnabled(true);
  
          // Enable / Disable zooming controls
          googleMap.getUiSettings().setZoomControlsEnabled(true);
  
          // Enable / Disable my location button
          googleMap.getUiSettings().setMyLocationButtonEnabled(true);
  
          // Enable / Disable Compass icon
          googleMap.getUiSettings().setCompassEnabled(true);
  
          // Enable / Disable Rotate gesture
          googleMap.getUiSettings().setRotateGesturesEnabled(true);
  
          // Enable / Disable zooming functionality
          googleMap.getUiSettings().setZoomGesturesEnabled(true);
  
          Bundle extra = getIntent().getBundleExtra("extra");
          ArrayList&lt;Escolas&gt; objects = (ArrayList&lt;Escolas&gt;) extra.getSerializable("array");
  
  
          try {
  
              for(int i = 0; i &lt; objects.size(); i ++) {
                  System.out.println(" escolas " + objects.get(i).getLatitude() + " " + objects.get(i).getLongitude());
  
                  float latitude = objects.get(i).getLatitude();
                  float longitude = objects.get(i).getLongitude();
  
                  googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(-23.316281, -51.155528), 15));
  
                  MarkerOptions options = new MarkerOptions();
  
                  // Setting the position of the marker
  
                  options.position(new LatLng(latitude, longitude));
  
                  googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
  
                  LatLng latLng = new LatLng(latitude, longitude);
                  drawMarkerWithCircle(latLng);
  
  
                  googleMap.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener() {
                      @Override
                      public void onMyLocationChange(Location location) {
                          float[] distance = new float[2];
  
                          Location.distanceBetween( mMarker.getPosition().latitude, mMarker.getPosition().longitude,
                                  mCircle.getCenter().latitude, mCircle.getCenter().longitude, distance);
  
                          if( distance[0] &gt; (mCircle.getRadius() / 2)  ){
                              Toast.makeText(getBaseContext(), "Outside", Toast.LENGTH_LONG).show();
                          } else {
                              Toast.makeText(getBaseContext(), "Inside", Toast.LENGTH_LONG).show();
                          }
  
                      }
                  });
  
  
  
  
              }
  
  
  
          } catch (Exception e) {
              e.printStackTrace();
          }
      }
  
  
      private void drawMarkerWithCircle(LatLng position){
          double radiusInMeters = 500.0;
          int strokeColor = 0xffff0000; //red outline
          int shadeColor = 0x44ff0000; //opaque red fill
  
          CircleOptions circleOptions = new CircleOptions().center(position).radius(radiusInMeters).fillColor(shadeColor).strokeColor(strokeColor).strokeWidth(8);
          mCircle = googleMap.addCircle(circleOptions);
  
          MarkerOptions markerOptions = new MarkerOptions().position(position);
          mMarker = googleMap.addMarker(markerOptions);
      }
  
  
  
      private void initilizeMap() {
  
          if (googleMap == null) {
              googleMap = ((MapFragment) getFragmentManager().findFragmentById(
                      R.id.map)).getMap();
  
              // check if map is created successfully or not
              if (googleMap == null) {
                  Toast.makeText(getApplicationContext(),
                          "Não foi possível carregar o mapa", Toast.LENGTH_SHORT)
                          .show();
              }
          }
      }
  
      @TargetApi(Build.VERSION_CODES.HONEYCOMB)
      @Override
      public void onBackPressed() {
  
          super.onBackPressed();
          finish();
  
      }
  
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
          // TODO Auto-generated method stub
          MenuInflater inflater = getMenuInflater();
          inflater.inflate(R.menu.menu_main, menu);
  
          return super.onCreateOptionsMenu(menu);
      }
  
      @TargetApi(Build.VERSION_CODES.HONEYCOMB)
      public boolean onOptionsItemSelected(MenuItem item) {
  
  
          switch (item.getItemId()) {
  
              case android.R.id.home:
                  super.onBackPressed();
                  finish();
  
                  return true;
  
  
          }
  
          return true;
  
      }
  
      @Override
      protected void onResume() {
          super.onResume();
          initilizeMap();
      }
  
  
  }
  </code></pre>