Проверить, находится ли маркер внутри радиуса круга

Я пытаюсь узнать, находится ли данный маркер внутри радиуса круга.

В javascript я могу сделать что-то вроде:

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

Но в андроиде, используя maps-v2, я застрял.

введите здесь описание изображения


person Otuyh    schedule 18.04.2013    source источник


Ответы (3)


После долгих исследований я нашел очень простое решение:

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();
}

Я тестирую это, и это работает. Может ли кто-нибудь тоже протестировать и дать отзыв здесь?

person Otuyh    schedule 18.04.2013
comment
@Otuyh Пожалуйста, вставьте свой полный ответ. - person ; 01.07.2014
comment
Я не думаю, что это решение будет очень точным для больших радиусов, так как оно не учитывает кривизну земли. Вы должны использовать формулу Хаверсина, если важна точность. - person lentz; 22.06.2016

Те же API, которые вы использовали бы в Javascript, доступны для Android здесь: https://github.com/googlemaps/android-maps-utils/blob/master/library/src/com/google/maps/android/SphericalUtil.java

person FunkTheMonk    schedule 11.06.2013

Я думаю, что можно найти центр круга, вы определяете круг в своем коде относительно данной геоточки. Вы можете сохранить его и использовать позже. Затем попробуйте Location.distanceBetween(..)

person Jashan PJ    schedule 18.04.2013