Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CLLocationCoordinate2D myNorthEast, mySouthWest;
- -(void)viewDidLoad{
- myNorthEast = CLLocationCoordinate2DMake(lat1,lon1);
- mySouthWest = CLLocationCoordinate2DMake(lat2,lon2);
- [super viewDidLoad];
- }
- -(void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated{
- /*
- / Check if the map region is going to change outside your fence.
- / If so, programmatically set it back to the edge of your fence.
- */
- if(!animated){
- return; // Don't want to get stuck in a loop after you set your region below.
- }
- MKCoordinateRegion region = [mapView region];
- // You will need to get the NE and SW points of the new region to compare
- // First we need to calculate the corners of the map so we get the points
- CGPoint nePoint = CGPointMake(mapView.bounds.origin.x + mapView.bounds.size.width, mapView.bounds.origin.y);
- CGPoint swPoint = CGPointMake(mapView.bounds.origin.x, 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];
- /*
- You will need to mess around with the lat/lon & sign of the new center calculation for the other cases.
- */
- if(neCoord.latitude > myNorthEast.latitude){
- MKCoordinateRegion newRegion;
- newRegion.span = region.span;
- CLLocationCoordinate2D newCenter;
- newCenter.longitude = region.center.longitude;
- newCenter.latitude = myNorthEast.latitude - region.span.latitudeDelta;
- newRegion.center = newCenter;
- [mapView setRegion:newRegion animated:NO];
- }else if(neCoord.longitude < myNorthEast.longitude){
- }else if(swCoord.latitude < mySouthWest.latitude){
- }else if(swCoord.longitude > mySouthWest.longitude){
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement