latitudeDifferenceForZoom static method

double latitudeDifferenceForZoom(
  1. double zoomLevel,
  2. double pixelThreshold,
  3. double latitude
)

Implementation

static double latitudeDifferenceForZoom(double zoomLevel, double pixelThreshold, double latitude) {
  const double earthCircumference = 40075017.0; // Earth's circumference in meters
  const double earthRadius = 6378137.0; // Earth's radius in meters

  // Calculate meters per pixel based on zoom level and latitude
  double cosLat = cos(latitude * pi / 180); // Precompute cos(latitude) once
  double metersPerPixel = earthCircumference * cosLat / (256 * pow(2, zoomLevel)); // Scale for zoom level

  // Convert meters to latitude difference directly
  return (metersPerPixel * pixelThreshold) / (earthRadius * pi / 180);
}