getNearbyPoints static method

List<LatLng> getNearbyPoints(
  1. LatLng center,
  2. double radiusInMeters,
  3. int count
)

Implementation

static List<LatLng> getNearbyPoints(LatLng center, double radiusInMeters, int count) {
  const earthRadius = 6371000; // in meters
  final points = <LatLng>[];

  for (var i = 0; i < count; i++) {
    final angle = (360 / count) * i;
    final bearingRad = _degToRad(angle);
    final distanceRatio = radiusInMeters / earthRadius;

    final lat1 = _degToRad(center.latitude);
    final lon1 = _degToRad(center.longitude);

    final lat2 = Math.asin(
      Math.sin(lat1) * Math.cos(distanceRatio) +
          Math.cos(lat1) * Math.sin(distanceRatio) * Math.cos(bearingRad),
    );
    final lon2 = lon1 +
        Math.atan2(
          Math.sin(bearingRad) * Math.sin(distanceRatio) * Math.cos(lat1),
          Math.cos(distanceRatio) - Math.sin(lat1) * Math.sin(lat2),
        );

    points.add(LatLng(_radToDeg(lat2), _radToDeg(lon2)));
  }

  return points;
}