Okay I officially answered my own question but since I didn’t find it anywhere before I’ll post the answer here:
//To calculate the search bounds...
//First we need to calculate the corners of the map so we get the points
CGPoint nePoint = CGPointMake(self.mapView.bounds.origin.x + mapView.bounds.size.width, mapView.bounds.origin.y);
CGPoint swPoint = CGPointMake((self.mapView.bounds.origin.x), (mapView.bounds.origin.y + mapView.bounds.size.height));
//Then transform those point into lat,lng values
CLLocationCoordinate2D neCoord;
neCoord = [mapView convertPoint:nePoint toCoordinateFromView:mapView];
CLLocationCoordinate2D swCoord;
swCoord = [mapView convertPoint:swPoint toCoordinateFromView:mapView];
SWIFT 5
public extension MKMapView {
var newBounds: MapBounds {
let originPoint = CGPoint(x: bounds.origin.x + bounds.size.width, y: bounds.origin.y)
let rightBottomPoint = CGPoint(x: bounds.origin.x, y: bounds.origin.y + bounds.size.height)
let originCoordinates = convert(originPoint, toCoordinateFrom: self)
let rightBottomCoordinates = convert(rightBottomPoint, toCoordinateFrom: self)
return MapBounds(
firstBound: CLLocation(latitude: originCoordinates.latitude, longitude: originCoordinates.longitude),
secondBound: CLLocation(latitude: rightBottomCoordinates.latitude, longitude: rightBottomCoordinates.longitude)
)
}
}
public struct MapBounds {
let firstBound: CLLocation
let secondBound: CLLocation
}
Usage
self.mapView.newBounds