Check if marker is inside circle radius
Asked Answered
L

3

15

I'm trying to know if a given marker is inside a circle radius.

In javascript, i can do something like:

google.maps.geometry.spherical.computeDistanceBetween(latLngCircleCenter, latLngPoint);

But in android, using maps-v2, i'm stucked.

enter image description here

Lang answered 18/4, 2013 at 12:11 Comment(0)
L
44

After a lot of research, i found a very simple solution:

float[] distance = new float[2];

Location.distanceBetween( marker.getPosition().latitude, marker.getPosition().longitude,
    circle.getCenter().latitude, circle.getCenter().longitude, distance);

if( distance[0] > circle.getRadius()  ){
    Toast.makeText(getBaseContext(), "Outside", Toast.LENGTH_LONG).show();
} else {
    Toast.makeText(getBaseContext(), "Inside", Toast.LENGTH_LONG).show();
}

I'm testing this and it's working. Can someone test too and give the feedback here?

Lang answered 18/4, 2013 at 17:26 Comment(2)
@Lang Please insert your complete answer.Gui
I don't think this solution will be very accurate for large radii since it doesn't take into account the curvature of the earth. You should use the Haversine formula if accuracy is of importance.Davidadavidde
C
1

The same APIs you'd use in Javascript are available for Android here: https://github.com/googlemaps/android-maps-utils/blob/master/library/src/com/google/maps/android/SphericalUtil.java

Colossae answered 11/6, 2013 at 10:46 Comment(0)
D
0

I think its possible to find the Centre of the circle, you are defining the circle in your code with repect to a given geopoint. You can save it and use later. Then try Location.distanceBetween(..)

Douce answered 18/4, 2013 at 12:30 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.