小编典典
您可以自己实现它,而无需使用任何框架,这非常容易…
我假设您要检查您是否在圆形地理围栏内。
为此,只需计算圆心与您的位置之间的距离(经度,纬度)。如果距离小于圆半径,则说明您在地理围栏内,否则就在地理围栏外。
像这样:
boolean checkInside(Circle circle, double longitude, double latitude) {
return calculateDistance(
circle.getLongitude(), circle.getLatitude(), longitude, latitude
) < circle.getRadius();}
要计算两点之间的距离,可以使用以下方法:
double calculateDistance(
double longitude1, double latitude1,
double longitude2, double latitude2) {
double c =
Math.sin(Math.toRadians(latitude1)) *
Math.sin(Math.toRadians(latitude2)) +
Math.cos(Math.toRadians(latitude1)) *
Math.cos(Math.toRadians(latitude2)) *
Math.cos(Math.toRadians(longitude2) -
Math.toRadians(longitude1));
c = c > 0 ? Math.min(1, c) : Math.max(-1, c);
return 3959 * 1.609 * 1000 * Math.acos(c);
}
该公式称为Haversine公式。它考虑了地球的弯曲。结果以米为单位。
我也在博客上描述了它:
用于检查地理栅栏多边形:http ://stefanbangels.blogspot.be/2013/10/geo-fencing-sample-code.html
2020-11-19