检查标记是否在圆形半径内

15

我想知道一个给定的标记是否在圆的半径内。

在JavaScript中,我可以这样做:

google.maps.geometry.spherical.computeDistanceBetween(latLngCircleCenter, latLngPoint);
但在Android中,使用maps-v2时,我卡住了。

在这里输入图片描述

3个回答

44

经过大量研究,我找到了一个非常简单的解决方案:

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

我正在测试这个,并且它能够工作。有人也可以测试一下并在此处提供反馈吗?


@Otuyh 请插入您完整的答案。 - user3559272
1
我认为这个解决方案对于大半径来说不会非常准确,因为它没有考虑到地球的曲率。如果精度很重要,您应该使用Haversine公式。 - lentz

1

0

我认为可以找到圆的中心,您在代码中定义圆与给定地理点有关。您可以保存它并稍后使用。然后尝试 Location.distanceBetween(..)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接