检查纬度和经度是否在圆圈内

请看下图:

enter image description here

我想知道的是:

  1. 如何在给定经纬度和距离(10公里)时创建区域(圆)
  2. 如何检查(计算)纬度和经度是否在区域内或区域外

我希望你能给我Java的代码示例,或者专门用于Android的Google Maps API V2代码示例。


答案 1

你基本上需要的是地图上两点之间的距离:

float[] results = new float[1];
Location.distanceBetween(centerLatitude, centerLongitude, testLatitude, testLongitude, results);
float distanceInMeters = results[0];
boolean isWithin10km = distanceInMeters < 10000;

如果已有对象:Location

Location center;
Location test;
float distanceInMeters = center.distanceTo(test);
boolean isWithin10km = distanceInMeters < 10000;

以下是所使用的API的有趣部分:https://developer.android.com/reference/android/location/Location.html


答案 2

检查这个:

 private boolean isMarkerOutsideCircle(LatLng centerLatLng, LatLng draggedLatLng, double radius) {
    float[] distances = new float[1];
    Location.distanceBetween(centerLatLng.latitude,
            centerLatLng.longitude,
            draggedLatLng.latitude,
            draggedLatLng.longitude, distances);
    return radius < distances[0];
}

推荐